Algorithm 488: A Gaussian pseudo-random number generator

23. R. P. Brent, Algorithm 488: A Gaussian pseudo-random number generator [G5], Communications of the ACM 17 (1974), 704-706.

Abstract: dvi (2K), pdf (77K).

Paper: pdf (304K).


We present an algorithm GRAND for generating normally distributed pseudo-random numbers, assuming the existence of a source of uniform random numbers. The method is exact, apart from the effect of rounding errors. The idea of using a rejection technique to avoid any elementary function evaluations is due to Von Neumann and Forsythe, but our implementation requires less uniform samples per result than previous implementations. In fact, only about 1.38 uniform samples are required per normal variate.


GRAND and a uniform generator RAND are available in a compressed tar file and a zipped file. You can also download text files GRAND and RAND directly.

RAND is no longer recommended as a general-purpose uniform random number generator because the lags in the three-term recurrence are too small [217].

Implementations of some more recent (and probably faster and/or better) uniform and normal random number generators are available here.

Later papers on random number generation include [132, 133, 141, 170, 185, 217, 218, 238]. In particular, the genesis of this paper is described in [238].

Go to next publication

Return to Richard Brent's index page