Uniform random number generatorCompiled and "slightly" modified by Paul BourkeOriginal: December 1990 Updated: March 1998 The generation of random numbers is too important to be left to chance.
The library is made up of two files
Some simple test programs Contribution by Stan Reckard These let one move forward or backward along the random number sequence: reckard.c Contribution by Mark Sheeky: Random.cpp
The following is the original description of the algorithm for
the uniform random number generator. This Random Number Generator is based on the algorithm in a FORTRAN version published by George Marsaglia and Arif Zaman, Florida State University. At the fhw (Fachhochschule Wiesbaden, W.Germany), Dept. of Computer Science, we have written sources in further languages (C, Modula-2 Turbo-Pascal(3.0, 5.0), Basic and Ada) to get exactly the same test results compared with the original FORTRAN version. This random number generator originally appeared in "Toward a Universal Random Number Generator" by George Marsaglia and Arif Zaman. Florida State University Report: FSU-SCRI-87-50 (1987) It was later modified by F. James and published in "A Review of Pseudo- random Number Generators" The algorithm is a combination of a Fibonacci sequence (with lags of 97 and 33, and operation "subtraction plus one, modulo one") and an "arithmetic sequence" (using subtraction).
The following is the header and credits for the Gaussian distributed
random samples.
ALGORITHM 712, COLLECTED ALGORITHMS FROM ACM. The function returns a normally distributed pseudo-random number with zero mean and unit variance. Calls are made to a function sub-program which must return independent random numbers uniform in the interval (0,1). The algorithm uses the ratio of uniforms method of A.J. Kinderman and J.F. Monahan augmented with quadratic bounding curves.
|