From 01e27acbec4d8ce1b7a78f07dc8f9080f71854a9 Mon Sep 17 00:00:00 2001 From: Jason Garber <8061+jgarber@users.noreply.github.com> Date: Wed, 3 Sep 2025 00:44:47 -0400 Subject: [PATCH] [DOC] Clarify differences between Kernel.rand and Random.rand when given a Float `max` * [DOC] Clarify differences between Kernel.rand and Random.rand * `Kernel.rand` converts the `max` Float argument to Integer and returns Integer values * `Random.rand` preserves the `max` Float argument and returns Float values * Added examples demonstrating the behavioral differences --- random.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/random.c b/random.c index 9b8cec40b4abb7..bf5588186c2771 100644 --- a/random.c +++ b/random.c @@ -1552,9 +1552,11 @@ static VALUE rand_random(int argc, VALUE *argv, VALUE obj, rb_random_t *rnd); * 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+. + * between 0.0 and +max+, including 0.0 and excluding +max+. Note that it + * behaves differently from Kernel.rand. * - * prng.rand(1.5) # => 1.4600282860034115 + * 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. @@ -1692,7 +1694,9 @@ rand_mt_equal(VALUE self, VALUE other) * Kernel.srand may be used to ensure that sequences of random numbers are * reproducible between different runs of a program. * - * See also Random.rand. + * Related: Random.rand. + * rand(100.0) # => 64 (Integer because max.to_i is 100) + * Random.rand(100.0) # => 30.315320967824523 */ static VALUE