Random 1.0.0 released

The RandMT package is replaced with the Random package which provides additional PRNG's.

mt_rand() is based upon the Mersenne Twister PRNG algorithm ([1], [2]). This PRNG has an enormous period (in fact it is 2**19937-1 which is a Mersenne Prime, hence the name). It is also suposedly faster than the standard C library rand() function. Furthermore, while the stock Tcl rand function generates numbers in the range (0,1) - randmt produces numbers in the range [0,1]. If required, it can also produce values within (0,1) as well as integer values (any 32bit value) - we would just need some names for these functions.

isaac_rand() uses the ISAAC algorithm [3] by Bob Jenkins. ISAAC (Indirection, Shift, Accumulate, Add, and Count) generates 32-bit random numbers. The period is guaranteed to be at least 2**40 and is 2**8295 on average. The results are uniformly distributed, unbiased, and unpredictable unless you know the seed. This PRNG is suitable for cryptographic use provided a suitably random seed can be provided.

Posted by Pat Thoyts 2003-04-14