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