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
random.c
View on GitHub ↗
static VALUE
random_rand(int argc, VALUE *argv, VALUE obj)
{
const rb_random_interface_t *rng = NULL;
rb_random_t *rnd = try_get_rnd(obj, &rng);
VALUE v = rand_random(argc, argv, obj, rng, rnd);
check_random_number(v, argv);
return v;
}
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.