Random number generator

The function rand() produces a sequence of pseudo-random numbers between 0 and 1 using an algorithm from P. L'Ecuyer and S. Cote, "Implementing a random number package with splitting facilities", ACM Transactions on Mathematical Software, 17:98-111 (1991).

     rand(0)     returns a pseudo random number in the open interval (0:1)
                 generated from the current value of two internal
                 32-bit seeds.
     rand(-1)    resets both seeds to a standard value.
     rand(x)     for integer 0 < x < 2^31-1 sets both internal seeds
                 to x.
     rand({x,y}) for integer 0 < x,y < 2^31-1 sets seed1 to x and
                 seed2 to y.