Skip to content

Preview Ruby 4.1 is a preview. It can change before the final release. Switch to Ruby 4.0 →

instance method

Random#rand

(?0) -> ::Float
(::Integer | ::Range[::Integer] max) -> ::Integer
(::Float | ::Range[::Float] max) -> ::Float
prng.rand → float
prng.rand(max) → number
prng.rand(range) → number

When max is an Integer, rand returns a random integer greater than or equal to zero and less than max. Unlike Kernel.rand, when max is a negative integer or zero, rand raises an ArgumentError.

Example
prng = Random.new
prng.rand(100)       # => 42

When max is a Float, rand returns a random floating point number between 0.0 and max, including 0.0 and excluding max. Note that it behaves differently from Kernel.rand.

Example
prng.rand(1.5)  # => 1.4600282860034115
rand(1.5)       # => 0

When range is a Range, rand returns a random number where range.member?(number) == true.

Example
prng.rand(5..9)      # => one of [5, 6, 7, 8, 9]
prng.rand(5...9)     # => one of [5, 6, 7, 8]
prng.rand(5.0..9.0)  # => between 5.0 and 9.0, including 9.0
prng.rand(5.0...9.0) # => between 5.0 and 9.0, excluding 9.0

Both the beginning and ending values of the range must respond to subtract (-) and add (+)methods, or rand will raise an ArgumentError.

See also .rand #bytes #seed #== also in 4.0 · 3.4 · 3.3 · 3.2 · 3.1 · 3.0