We do the math so you don't have to!

Random Number Generation


Anyone who considers arithmetical methods of producing random digits is, of course, in a state of sin.
John Von Neumann (1951)

Here is information on pseudo and quasi random number generation with implementations in several languages. And a tutorial on how to generate nonuniformly distributed random numbers.

*Pseudo-Random number generation using R250 (Kirkpatrick and Stoll, 1981).

Note: R250 is an example of a shift register generator. This one has a register length of 250 which results in a period of 2^249. The code provide here can easily be modifed for other register lengths. The following two papers describe the parameters that are needed for lengths from 1 to 1000:

Zierler, N. and J. Brillhart,1968; On primitive trinomials (mod 2), Information and Control, Vol 13 No 6 (Dec), pp. 541 - 554
Zierler, N. and J. Brillhart,1969; On primitive trinomials (mod 2) II, Information and Control, Vol 14 No 6 (Jun), pp. 566 - 569

Warning: R250 requires the use of a separate random number generator in order to intialize itself. It can fail spectacularly if the initialization is poorly done. I have had reliable results using the Park and Miller "minimal standard" generator for the initializer. The above implementations use this initializer (which is included in the source code).

* Quasi-Random number generation (Press and Teukolsky, 1989).

* George Marsaliga's Mother of all Pseudo-Random-Number-Generators. (Warning: this is a slow PRNG, R250 is much faster).

* Whats all the fuss about ? Why can't I just use the PRNG that came with my compiler ?

See Also:


Everett (Skip) Carter Taygeta Scientific Inc. 1340 Munras ave., suite 314 Monterey, CA. 93940
Phone: 831-641-0645 FAX: 831-641-0647 e-mail:skip@taygeta.com WWW: http://www.taygeta.com/
HomeTaygeta's Home page