List of random number generators

from Wikipedia, the free encyclopedia

Pseudorandom number generators

Pseudo-random generators are deterministic random number generators , the pseudo-random numbers generate (engl. Pseudo random number generator ). The sequences of numbers they generate appear random , although they are calculated by a deterministic algorithm .

Reliable generators

These subsequent pseudo random number generators pass all BigCrush tests of the TestU01 software suite, i. H. the generated pseudo-random number sequence cannot be distinguished from a genuinely random one with these tests.

The term reliable is meant here in the stochastic sense; it does not automatically mean that a generated sequence is also cryptographically secure. Special requirements are placed on cryptographically secure random number generators .

Surname log 2 k
Marsaglias KISS > 124
Marsaglias LFIB4 287
ran1 ( Numerical Recipes 3) ?
CMWC 4096 131086
Xorshift + 128 128
AES ( CTR ) -
AES ( OFB ) -
SHA-1 ( CTR ) -
SHA-1 ( OFB ) -
Whirlpool ( CTR ) -
MRG32k3a 191
ACORN 30, 60, 90, 120 , ... 30 t

depends on the initial parameters

In the tables, log 2 is the two logarithm of the period length. The specification "> 124" means that the period of the generator is longer than 2 124 , i. H. only after more than 2,124 generated numbers does it begin to repeat itself.

Limited reliable generators

These pseudorandom number generators pass all BigCrush tests except those for linear dependency . They can be used for practical and non-cryptological purposes. However, it does mean that linear dependencies may occur if larger amounts of such random numbers are used.

Surname log 2 k Failed tests
Mersenne twister 19937 2: LinearComp
WELL 512 512 7th
WELL 1024 1024 5: MatrixRank, LinearComp, HammingIndep
WELL 19937 19937 2: LinearComp
WELL 44497 44497 2: LinearComp

Little to unreliable generators

These pseudorandom number generators fail most of the tests. They should only be used if considerable stochastic defects in the generated number sequences can be accepted.

Surname log 2 k Failed tests comment
TT800 800 17th
Xorshift (32/64/128) 32/64/128 almost all / 7/16
All linear repeat generators almost all classic generator in standard libraries, e.g. B. rand () (from stdlib.h or PHP) or drand48 () , Java.util.Random, ...

Further

Real random number generators

Real random number generators are nondeterministic random number generators that generate really random number sequences (English random number generator ). The number sequences you generate are not reproducible , like the drawing of the lottery numbers , and are aperiodic . These real random number generators generate random numbers with the help of physical processes. They are usually considerably slower than pseudo-random number generators, i.e. they deliver real random numbers in a (relatively) low frequency.

Random number server

Random number servers combine the generation of real random number sequences with the help of non-deterministic random number generators and their representation via a web interface and online services. Information on the desired sequence of numbers can be made, e.g. B. five random numbers out of 50 numbers, as in the Eurojackpot .

hardware

Real random numbers of high quality generated in this way can be used as starting values ​​for deterministic pseudo-random number generators.

  • Intel's RdRand command

External entropy

Real random numbers of low quality generated in this way can be used as starting values ​​for deterministic pseudo-random number generators.

Individual evidence

  1. a b Pierre L'Ecuyer, Richard Simard: TestU01: AC library for empirical testing of random number generators , ACM Transactions on Mathematical Software, Volume 33 Issue 4, August 2007
  2. Sebastiano Vigna: Further scramblings of Marsaglia's xorshift generators . April 2014. Describes xorshift + generators, a generalization of XSadd. Also available directly from the author .
  3. ^ Pierre L'Ecuyer: Good Parameters and Implementations for Combined Multiple Recursive Random Number Generators , accessed May 11, 2012
  4. MRG32k3a source code
  5. Roy Wikramaratna (1989). ACORN - A new method for generating sequences of uniformly distributed pseudo-random numbers. Journal of Computational Physics. 83, 16-31.
  6. Roy Wikramaratna (April 2019): Royal Society posters talk
  7. Roy Wikramaratna (June 2019): Oxford University Numerical Analysis seminar
  8. ^ Intel: Bull Mountain Software Implementation Guide
  9. CryptGenRandom function on MSDN, accessed May 11, 2012
  10. random (4) - Linux manual page , accessed May 15, 2012