Joel VanderWerf
5/22/2007 8:00:00 PM
Roland Mai wrote:
> I need a random number generator that generates random numbers with a
> uniform distribution.
>
> I am not sure what rand does in ruby and I can't seem to find it online
> either. My initial assumption is that it follows a uniform distribution,
> but
> I can't tell.
>
> Any ideas?
Yes, rand() is uniform in the interval 0 <= x < 1. It's based on MT19937.
If you have a working ri installation, then you can read about it this way:
$ ri Kernel#rand | cat
------------------------------------------------------------ Kernel#rand
rand(max=0) => number
------------------------------------------------------------------------
Converts max to an integer using max1 = max.to_i.abs. If the
result is zero, returns a pseudorandom floating point number
greater than or equal to 0.0 and less than 1.0. Otherwise, returns
a pseudorandom integer greater than or equal to zero and less than
max1. Kernel::srand may be used to ensure repeatable sequences of
random numbers between different runs of the program. Ruby
currently uses a modified Mersenne Twister with a period of
219937-1.
srand 1234 #=> 0
[ rand, rand ] #=> [0.191519450163469,
0.49766366626136]
[ rand(10), rand(1000) ] #=> [6, 817]
srand 1234 #=> 1234
[ rand, rand ] #=> [0.191519450163469,
0.49766366626136]
--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407