User:L0rents/sandbox

Random number generators are important in many kinds of applications, including physics, engineering or mathematical computer studies (e.g., Monte Carlo simulations), cryptography and gambling (on game servers).

This list includes many common types, regardless of quality.

Pseudorandom number generators (PRNGs)
The following algorithms are pseudorandom number generators.

Cryptographic algorithms
Cipher algorithms and cryptographic hashes can also be used as very high-quality pseudorandom number generators. However, they are, generally speaking, substantially slower (typically by a factor 2-10) than fast, non-cryptographic random number generators.

These include:


 * Stream ciphers. Popular choices are Salsa20 or ChaCha (often with the number of rounds reduced to 4 to 8 for speed), ISAAC, HC-128 and RC4.
 * Block ciphers in counter mode. Common choices are AES (which is very fast on systems supporting it in hardware), TwoFish, Serpent and Camellia.
 * Cryptographic hash functions

A few cryptographically secure pseudorandom number generator do not rely on cipher algorithms but try to link mathematically the difficulty of distinguishing their output from a `true' random stream to a computationally difficult problem. These approaches are theoretically important but are too slow to be practical in most applications. They include:
 * Blum–Micali algorithm (1984)
 * Blum Blum Shub (1986)
 * Naor–Reingold pseudorandom function (1997)

Random number generators that use external entropy
These approaches combine a pseudo-random number generator (often in the form of a block of stream cipher) with an external source of randomness (e.g., mouse movements, delay between keyboard presses etc.).


 * CryptGenRandom - Microsoft Windows
 * Intel RdRand instructions (called by Intel Secure Key), available in Intel x86 CPUs since 2012. They use the AES generator built-in the CPU, reseeding it periodically.
 * Yarrow
 * Fortuna
 * [/dev/random /dev/random] - Linux and Unix

Hardware (true) random number generators (TRNGs)
The following is a list of companies that produce hardware random number generators:
 * ID Quantique
 * QuintessenceLabs
 * ProtegoST
 * BitBabbler