RANDU

Uses your system voice; voice and rate in settings.

Snapshot

≈ 5 min read

Names in other languages

No names in other languages are held for this entry yet.

Article bodies are English and are not machine-translated. A name in another language is not a translation of the article.

of 100,000 values generated with RANDU. Each point represents 3 consecutive pseudorandom values. It is clearly seen that the points fall in 15 two-dimensional planes. RANDU is an obsolete method for generating random numbers used primarily in the 1960s and 1970s. It is a linear congruential generator (LCG) of the Park–Miller type defined by the recurrence : V_{j+1} = 65539 \cdot V_j \bmod 2^{31} with the initial seed number V_0 as an odd number. It generates pseudorandom integers V_j which are uniformly distributed in the interval , but in practical applications are often mapped into pseudorandom rationals X_j in the interval , by the formula : X_j = \frac{V_j}{2^{31}}. IBM's RANDU is widely considered to be one of the most ill-conceived random number generators ever designed, and was described as "truly horrible" by Donald Knuth. It fails the spectral test badly for dimensions greater than 2, as shown below. The reason for choosing these particular values for the multiplier and modulus had been that with a 32-bit-integer word size, the arithmetic of mod 2 31 and 65539 = 2^{16} + 3 calculations could be done quickly, using bitwise operators in hardware, but the values were chosen for computational convenience, not statistical quality.

of 100,000 values generated with RANDU. Each point represents 3 consecutive pseudorandom values. It is clearly seen that the points fall in 15 two-dimensional planes.]] RANDU is an obsolete method for generating random numbers used primarily in the 1960s and 1970s. It is a linear congruential generator (LCG) of the Park–Miller type defined by the recurrence V_{j+1} = 65539 \cdot V_j \bmod 2^{31} with the initial seed number V_0 as an odd number. It generates pseudorandom integers V_j which are uniformly distributed in the interval , but in practical applications are often mapped into pseudorandom rationals X_j in the interval , by the formula X_j = \frac{V_j}{2^{31}}. IBM's RANDU is widely considered to be one of the most ill-conceived random number generators ever designed, and was described as "truly horrible" by Donald Knuth. It fails the spectral test badly for dimensions greater than 2, as shown below. The reason for choosing these particular values for the multiplier and modulus had been that with a 32-bit-integer word size, the arithmetic of mod 2 31 and 65539 = 2^{16} + 3 calculations could be done quickly, using bitwise operators in hardware, but the values were chosen for computational convenience, not statistical quality. For any linear congruential generator with modulus m used to generate points in n-dimensional space, the points fall in no more than (n! \times m)^{1/n} parallel hyperplanes. This indicates that low-modulus LCGs are unsuited to high-dimensional Monte Carlo simulation. For m = 2 31 and n = 3, an LCG could have up to 2344 planes, theoretical maximum. A much tighter upper bound is proved in the same Marsaglia paper to be the sum of the absolute values of all the coefficients of the hyperplanes in standard form. That is, if the hyperplanes are of the form Ax 1 + Bx 2 + Cx 3 = some integer such as 0, 1, 2 etc, then the maximum number of planes is |A| + |B| + |C|. Now we examine the values of multiplier 65539 and modulus 2 31 chosen for RANDU. Consider the following calculation where every term should be taken mod 2 31 . Start by writing the recursive relation as x_{k+2} = (2^{16} + 3) x_{k+1} = (2^{16} + 3)^2 x_k, which after expanding the quadratic factor becomes x_{k+2} = (2^{32} + 6 \cdot 2^{16} + 9) x_k =[6 \cdot (2^{16} + 3) - 9] x_{k} (because ) and allows us to show the correlation between three points as x_{k+2} = 6x_{k+1} - 9x_{k}. Summing the absolute values of the coefficients, we get no more than 16 planes in 3D, becoming only 15 planes on closer examination, as shown in the diagram above. Even by the standards of LCGs, this shows that RANDU is terrible: using RANDU for sampling a unit cube will only sample 15 parallel planes, not even close to the upper limit of \Big\lfloor\big(2^{31} \times 3!\big)^{1/3}\Big\rfloor = 2344 planes. As a result of the wide use of RANDU in the early 1970s, many results from that time are seen as suspicious. This misbehavior was already detected in 1963 on a 36-bit computer, and carefully reimplemented on the 32-bit IBM System/360. It was believed to have been widely purged by the early 1990s but there were still FORTRAN compilers using it as late as 1999. ==Sample output== The start of the RANDU's output period for the initial seed V_0 = 1 is 1, 65539, 393225, 1769499, 7077969, 26542323, … . ==References== == External links==

Text derived from https://en.wikipedia.org/w/index.php?oldid=1334279494 under CC BY-SA 4.0; modifications have been made.

Sources cited in this revision

Extracted from the cited revision's reference blocks; absent citations are not invented.