List of random number generators
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
- Blum-Blum-Shub generator
- Dual EC DRBG
- Inverse congruence generator
- Congruence generators
- Maximum length sequence
- Multiply-with-carry
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 .
- random.org - based on atmospheric noise as a radio source
- qrng.physik.hu-berlin.de - based on quantum randomness of photons arrival times as entropy source.
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.
- CryptGenRandom, Microsoft Windows , Cryptography API
- the virtual device file / dev / random on Linux and other Unix-like operating systems.
Individual evidence
- ↑ 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
- ↑ Sebastiano Vigna: Further scramblings of Marsaglia's xorshift generators . April 2014. Describes xorshift + generators, a generalization of XSadd. Also available directly from the author .
- ^ Pierre L'Ecuyer: Good Parameters and Implementations for Combined Multiple Recursive Random Number Generators , accessed May 11, 2012
- ↑ MRG32k3a source code
- ↑ Roy Wikramaratna (1989). ACORN - A new method for generating sequences of uniformly distributed pseudo-random numbers. Journal of Computational Physics. 83, 16-31.
- ↑ Roy Wikramaratna (April 2019): Royal Society posters talk
- ↑ Roy Wikramaratna (June 2019): Oxford University Numerical Analysis seminar
- ^ Intel: Bull Mountain Software Implementation Guide
- ↑ CryptGenRandom function on MSDN, accessed May 11, 2012
- ↑ random (4) - Linux manual page , accessed May 15, 2012
- Pierre L'Ecuyer: TestU01 Library , accessed May 11, 2012
- Pierre L'Ecuyer's publications , University of Montreal