Next: Multiple Streams, Previous: RNGs, Up: RNGs
Some of the generators have been slightly modified from their usual form to make them consistent between themselves. For instance, the Wichmann-Hill generators in standard form may return exactly 0.0 but not exactly 1.0. In ACML we return 1.0 - x to convert the value x into the semi-open interval (0, 1] without affecting any other randomness properties. The original Mersenne Twister algorithm returns an exact zero about one time in a few billion; the ACML implementation returns a tiny non-zero number as surrogate for zero.
If a single stream of variates is required it is recommended that the Mersenne Twister (Mersenne Twister) base generator is used. This generator combines speed with good statistical properties and an extremely long period. The NAG basic generator (Basic NAG Generator) is another quick generator suitable for generating a single stream. However it has a shorter period than the Mersenne Twister and being a linear congruential generator, its statistical properties are not as good.
If 273 or fewer multiple streams, with a period of up to 2^(80) are required then it is recommended that the Wichmann-Hill generators are used (Wichmann-Hill Generator). For more streams or multiple streams with a longer period it is recommended that the L'Ecuyer combined recursive generator (L'Ecuyer's Combined Recursive Generator) is used in combination with the skip ahead routine (Skip Ahead). Generating multiple streams of variates by skipping ahead is generally quicker than generating the streams using the leap frog method. More details on multiple streams can be found in Multiple Streams.
The Blum-Blum-Shub generator (Blum-Blum-Shub Generator) should only be used if a cryptologically secure generator is required. This generator is extremely slow and has poor statistical properties when used as a base generator for any of the distributional generators.