MATLAB Answers

What is the algorithm used by the normally distributed pseudorandom number generator RANDN in MATLAB 5.0 and later?

59 views (last 30 days)
I am generating random numbers with RANDN and I would like to know the algorithm used and its period.

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 1 Feb 2017
This change has been incorporated into the documentation in Release 2009a (R2009a). For previous releases, read below for any additional information:
The default normal random number generator algorithm used in RANDN in MATLAB 5.0 (R12) and later is an implementation of the Ziggurat method of Marsaglia and Tsang. The implementation has a period on the order of 2^64.
One implementation (not the one used in MATLAB) of the Ziggurat method in the literature has a period of 2^32-1, and a paper by Leong et al.
(Journal of Statistical Software 12(7)) commented that this period is probably too short for current use. As noted above, the implementation of the Ziggurat method used in RANDN has a much longer period.
Details of the Ziggurat method are discussed in chapter 9 of the book Numerical Computing with MATLAB. The book is available on-line at
and a PDF-file for chapter 9 is at
Prior to MATLAB Version 5, RANDN used an implementation of the Polar method. The implementation has a period of approximately (2^32-1)*(pi/8). Type "doc RANDN" at the MATLAB command prompt for details on how to use that algorithm.


Sign in to comment.

More Answers (0)

Sign in to answer this question.


No tags entered yet.