Remarkably fest methods for generating normal and exponential random variables have been developed for conventional computers-their average times are little more than that needed to generate the uniform variable used to produce the result. But for “supercomputers,” with vector and/or parallel operations, and particularly for massively parallel machines with hundreds or thousands of processors, average times are not the proper measure of the speed of a generating procedure. For them, the worst case applies: The next step in a simulation cannot begin until all of the processors have generated their particular normal (or exponential, gamma, Poisson, and such) variable. So, for such new or anticipated (SIMD) architectures we must consider efficient constant-time methods for generating the important random variables of Monte Carlo studies. We describe one here, for normal (Gaussian) random variables. It is, in effect, a very fast method for inverting the normal distribution function.
[1]
George Marsaglia.
IMPROVING THE POLAR METHOD FOR GENERATING A PAIR OF NORMAL RANDOM VARIABLES
,
1962
.
[2]
W. P. Petersen.
Some vectorized random number generators for uniform, normal, and poisson distributions for CRAY X-MP
,
2004,
The Journal of Supercomputing.
[3]
George Marsaglia,et al.
A Fast, Easily Implemented Method for Sampling from Decreasing or Symmetric Unimodal Density Functions
,
1984
.
[4]
G. Marsaglia.
Expressing a Random Variable in Terms of Uniform Random Variables
,
1961
.
[5]
S. C. Black,et al.
Gaussian random number generators on a CYBER-205
,
1989
.
[6]
George Marsaglia,et al.
Improvements on Fast Methods for Generating Normal Random Variables
,
1976,
Inf. Process. Lett..
[7]
Ping Tak Peter Tang.
Table-driven implementation of the Expm1 function in IEEE floating-point arithmetic
,
1992,
TOMS.