(2007) described the result thusly: "If all scientific papers whose results are in doubt because of were to disappear from library shelves, there would be a gap on each shelf about as big as your fist." Ī major advance in the construction of pseudorandom generators was the introduction of techniques based on linear recurrences on the two-element field such generators are related to linear-feedback shift registers.
The quality of LCGs was known to be inadequate, but better methods were unavailable. In the second half of the 20th century, the standard class of algorithms used for PRNGs comprised linear congruential generators. Other higher-quality PRNGs, both in terms of computational and statistical performance, were developed before and after this date these can be identified in the List of pseudorandom number generators. One well-known PRNG to avoid major problems and still run fairly quickly was the Mersenne Twister (discussed below), which was published in 1998. As of 2017, Java still relies on a linear congruential generator (LCG) for its PRNG, which are of low quality-see further below.
Perhaps amazingly, it remains as relevant today as it was 40 years ago.Īs an illustration, consider the widely used programming language Java. This last recommendation has been made over and over again over the past 40 years.
OLD RANDOM NUMBER GENERATOR ALGORITHM SOFTWARE
Check the default RNG of your favorite software and be ready to replace it if needed. Do not trust blindly the software vendors. The list of widely used generators that should be discarded is much longer. Even today, caution is sometimes required, as illustrated by the following warning in the International Encyclopedia of Statistical Science (2010). In many fields, research work prior to the 21st century that relied on random selection or on Monte Carlo simulations, or in other ways relied on PRNGs, were much less reliable than ideal as a result of using poor-quality PRNGs. It was seriously flawed, but its inadequacy went undetected for a very long time. An example was the RANDU random number algorithm used for decades on mainframe computers.