title: List of random number generators
text: Random number generators are important in many kinds of technical 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 or applicability to a given use case.
  
  Pseudorandom number generators (PRNGs)
  
  The following algorithms are pseudorandom number generators.
  
  Cryptographic algorithms 
  Cipher algorithms and cryptographic hashes can be used as very high-quality pseudorandom number generators. However, generally they are considerably 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 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 generators 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 or stream cipher) with an external source of randomness (e.g., mouse movements, delay between keyboard presses etc.).
  
   /dev/random – Unix-like systems
   CryptGenRandom – Microsoft Windows
   Fortuna
   RDRAND instructions (called Intel Secure Key by Intel), available in Intel x86 CPUs since 2012. They use the AES generator built into the CPU, reseeding it periodically.
  True Random Number Generator using Corona Discharge.
   Yarrow
  
  See also
   Diceware
   Diehard tests – statistical test suite for random number generators
   Non-uniform random variate generation
   Hardware random number generator
   Random number generator attack
   Randomness
   TestU01 – statistical test suite for random number generators
  
  References
  
  External links
   SP800-90 series on Random Number Generation, NIST 
  Random Number Generation in the GNU Scientific Library Reference Manual
  Random Number Generation Routines in the NAG Numerical Library
  Chris Lomont's overview of PRNGs, including a good implementation of the WELL512 algorithm
  Source code to read data from a TrueRNG V2 hardware TRNG
  
  Computing-related lists
  Mathematics-related lists