All Topics  
Pseudorandom number generator

 

   Email Print
   Bookmark   Link






 

Pseudorandom number generator



 
 
A pseudorandom number generator (PRNG) is an algorithm
Algorithm

In mathematics, computing, linguistics and related subjects, an algorithm is a sequence of finite instructions, often used for calculation and data processing....
 for generating a sequence of numbers that approximates the properties of random numbers. The sequence is not truly random in that it is completely determined by a relatively small set of initial values, called the PRNG's state. Although sequences that are closer to truly random can be generated using hardware random number generator
Hardware random number generator

In computing, a hardware random number generator is an apparatus that generates random numbers from a physical process. Such devices are often based on microscopic phenomena such as thermal noise or the photoelectric effect or other quantum phenomena....
s, pseudorandom numbers are important in practice for simulations (e.g., of physical systems with the Monte Carlo method
Monte Carlo method

Monte Carlo methods are a class of computational algorithms that rely on repeated random sampling to compute their results. Monte Carlo methods are often used when computer simulation physics and mathematics systems....
), and are central in the practice of cryptography
Cryptography

Cryptography is the practice and study of hiding information. In modern times cryptography is considered a branch of both mathematics and computer science and is affiliated closely with information theory, computer security and engineering....
.






Discussion
Ask a question about 'Pseudorandom number generator'
Start a new discussion about 'Pseudorandom number generator'
Answer questions from other users
Full Discussion Forum



Encyclopedia


A pseudorandom number generator (PRNG) is an algorithm
Algorithm

In mathematics, computing, linguistics and related subjects, an algorithm is a sequence of finite instructions, often used for calculation and data processing....
 for generating a sequence of numbers that approximates the properties of random numbers. The sequence is not truly random in that it is completely determined by a relatively small set of initial values, called the PRNG's state. Although sequences that are closer to truly random can be generated using hardware random number generator
Hardware random number generator

In computing, a hardware random number generator is an apparatus that generates random numbers from a physical process. Such devices are often based on microscopic phenomena such as thermal noise or the photoelectric effect or other quantum phenomena....
s, pseudorandom numbers are important in practice for simulations (e.g., of physical systems with the Monte Carlo method
Monte Carlo method

Monte Carlo methods are a class of computational algorithms that rely on repeated random sampling to compute their results. Monte Carlo methods are often used when computer simulation physics and mathematics systems....
), and are central in the practice of cryptography
Cryptography

Cryptography is the practice and study of hiding information. In modern times cryptography is considered a branch of both mathematics and computer science and is affiliated closely with information theory, computer security and engineering....
. Common classes of these algorithms are linear congruential generator
Linear congruential generator

A linear congruential generator represents one of the oldest and best-known pseudorandom number generator algorithms. The theory behind them is easy to understand, and they are easily implemented and fast....
s, Lagged Fibonacci generator
Lagged Fibonacci generator

A Lagged Fibonacci generator is an example of a pseudorandom number generator. This class of random number generator is aimed at being an improvement on the 'standard' linear congruential generator....
s, linear feedback shift register
Linear feedback shift register

A linear feedback shift register is a shift register whose input bit is a Linear transformation function of its previous state.The only linear functions of single bits are xor and inverse-xor; thus it is a shift register whose input bit is driven by the exclusive-or of some bits of the overall shift register value....
s and generalised feedback shift registers. Recent instances of pseudorandom algorithms include Blum Blum Shub, Fortuna
Fortuna (PRNG)

Fortuna is a cryptographically secure pseudorandom number generator devised by Bruce Schneier and Niels Ferguson. It is named after Fortuna , the Roman goddess of chance....
, and the Mersenne twister
Mersenne twister

The Mersenne twister is a pseudorandom number generator developed in 1997 by and that is based on a matrix linear recurrence over a finite binary numeral system field ....
.

Careful mathematical analysis is required to have any confidence a PRNG generates numbers that are sufficiently "random" to suit the intended use. Robert R. Coveyou of Oak Ridge National Laboratory
Oak Ridge National Laboratory

Oak Ridge National Laboratory is a multiprogram science and technology national laboratory managed for the United States Department of Energy by UT-Battelle....
 once titled an article, "The generation of random numbers is too important to be left to chance." As John von Neumann
John von Neumann

John von Neumann was a Hungarian American mathematician who made major contributions to a vast range of fields, including set theory, functional analysis, quantum mechanics, ergodic theory, continuous geometry, economics and game theory, computer science, numerical analysis, hydrodynamics , and statistics, as well as many other mathematical...
 joked, "Anyone who considers arithmetical methods of producing random digits is, of course, in a state of sin."

Periodicity

A PRNG can be started from an arbitrary starting state, using a seed state
Random seed

A random seed is a number used to initialize a pseudorandom number generator.The choice of a good random seed is crucial in the field of computer security....
. It will always produce the same sequence thereafter when initialized with that state. The maximum length of the sequence before it begins to repeat is determined by the size of the state, measured in bit
Bit

A bit is a binary numeral system numerical digit, taking a value of either 0 or 1. Binary digits are a basic unit of information Computer data storage and transmission in digital computing and digital information theory....
s. However, since the length of the maximum period potentially doubles with each bit of 'state' added, it is easy to build PRNGs with periods long enough for many practical applications.

If a PRNG's internal state contains n bits, its period can be no longer than 2n results. For some PRNGs the period length can be calculated without walking through the whole period. Linear Feedback Shift Registers (LFSRs)
Linear feedback shift register

A linear feedback shift register is a shift register whose input bit is a Linear transformation function of its previous state.The only linear functions of single bits are xor and inverse-xor; thus it is a shift register whose input bit is driven by the exclusive-or of some bits of the overall shift register value....
 are usually chosen to have periods of exactly 2n-1. Linear congruential generator
Linear congruential generator

A linear congruential generator represents one of the oldest and best-known pseudorandom number generator algorithms. The theory behind them is easy to understand, and they are easily implemented and fast....
s have periods that can be calculated by factoring. Mixes (no restrictions) have periods of about 2n/2 on average, usually after walking through a nonrepeating starting sequence. Mixes that are reversible (permutations) have periods of about 2n-1 on average, and the period will always include the original internal state (e.g. ). Although PRNGs will repeat their results after they reach the end of their period, a repeated result does not imply that the end of the period has been reached, since its internal state may be larger than its output; this is particularly obvious with PRNGs with a 1-bit output.

Most pseudorandom generator algorithms produce sequences which are uniformly distributed
Uniform distribution (discrete)

In probability theory and statistics, the discrete uniform distribution is a discrete probability distribution that can be characterized by saying that all values of a finite set of possible values are equally probable....
 by any of several tests. It is an open question, and one central to the theory and practice of cryptography
Cryptography

Cryptography is the practice and study of hiding information. In modern times cryptography is considered a branch of both mathematics and computer science and is affiliated closely with information theory, computer security and engineering....
, whether there is any way to distinguish the output of a high-quality PRNG from a truly random sequence without knowing the algorithm(s) used and the state with which it was initialized. The security of most cryptographic algorithms and protocols using PRNGs is based on the assumption that it is infeasible to distinguish use of a suitable PRNG from use of a truly random sequence. The simplest examples of this dependency are stream cipher
Stream cipher

In cryptography, a stream cipher is a symmetric key algorithm cipher where plaintext bits are combined with a pseudorandom cipher bit stream , typically by an exclusive-or operation....
s, which (most often) work by exclusive or-ing the plaintext
Plaintext

In cryptography, plaintext is the information which the sender wishes to transmit to the receiver. Before the computer era, plaintext simply meant text in the language of the communicating parties....
 of a message with the output of a PRNG, producing ciphertext. The design of cryptographically adequate PRNGs is extremely difficult, because they must meet additional criteria (see below). The size of its period is an important factor in the cryptographic suitability of a PRNG, but not the only one.

Problems with deterministic generators

In practice, the output from many common PRNGs exhibit artifact
Artifact (observational)

In natural science and signal processing, an artifact is any perceived distortion or other data error caused by the instrument of observation....
s which cause them to fail statistical pattern detection tests. These include, but are certainly not limited to:

  • Shorter than expected periods for some seed states (such seed states may be called 'weak' in this context);
  • Lack of uniformity of distribution;
  • Correlation of successive values;
  • Poor dimensional distribution of the output sequence;
  • The distances between where certain values occur are distributed differently from those in a random sequence distribution.


Defects exhibited by flawed PRNGs range from unnoticeable (and unknown) to the absurdly obvious. An example was the RANDU
RANDU

RANDU is an infamous linear congruential generator pseudorandom number generator of the Park?Miller random number generator, which has been used since the 1960s....
 random number algorithm used for decades on mainframe computer
Mainframe computer

Mainframes are computers used mainly by large organizations for critical applications, typically bulk data processing such as census, industry and consumer statistics, Enterprise Resource Planning, and financial transaction processing....
s. It was seriously flawed, but its inadequacy went undetected for a very long time. In many fields, much research work of that period which relied on random selection or on Monte Carlo
Monte Carlo

Monte Carlo is one of Monaco's various administrative areas, sometimes erroneously believed to be a town or the country's capital. The official capital is Monaco-Ville and covers all quarters of the territory....
 style simulations, or in other ways, is less reliable than it might have been as a result.

Early approaches

An early computer-based PRNG, suggested by John von Neumann
John von Neumann

John von Neumann was a Hungarian American mathematician who made major contributions to a vast range of fields, including set theory, functional analysis, quantum mechanics, ergodic theory, continuous geometry, economics and game theory, computer science, numerical analysis, hydrodynamics , and statistics, as well as many other mathematical...
 in 1946, is known as the middle-square method
Middle-square method

In mathematics, the middle-square method is a method of generating pseudorandom numbers. In practice it is not a good method, since its period is usually very short and it has some crippling weaknesses....
. It is very simple: take any number, square it, remove the middle digits of the resulting number as your "random number", then use that number as the seed for the next iteration. For example, squaring the number "1111" yields "1234321", which can be written as "01234321", an 8-digit number being the square of a 4-digit number. This gives "2343" as the "random" number. Repeating this procedure gives "4896" as the next result, and so on. Von Neumann used 10 digit numbers, but the process was the same.

A problem with the "middle square" method is that all sequences eventually repeat themselves, some very quickly, such as "0000". Von Neumann was aware of this, but he found the approach sufficient for his purposes, and was worried that mathematical "fixes" would simply hide errors rather than remove them.

Von Neumann judged hardware random number generators unsuitable, for, if they did not record the output generated, they could not later be tested for errors. If they did record their output, they would exhaust the limited computer memories available then, and so the computer's ability to read and write numbers. If the numbers were written to cards, they would take very much longer to write and read. On the ENIAC
ENIAC

ENIAC, short for Electronic Numerical Integrator And Computer, was a general-purpose electronic computer. It was a Turing complete, digital computer capable of being reprogrammed to solve a full range of computing problems....
 computer he was using, the "middle square" method generated numbers at a rate some two hundred times faster than reading numbers in from punch card
Punch card

A punch card or punched card , is a piece of paperboard that contains digital information represented by the presence or absence of holes in predefined positions....
s.

The middle-square method has been supplanted by more elaborate generators.

Mersenne twister

The 1997 invention of the Mersenne twister
Mersenne twister

The Mersenne twister is a pseudorandom number generator developed in 1997 by and that is based on a matrix linear recurrence over a finite binary numeral system field ....
 algorithm, by Makoto Matsumoto and Takuji Nishimura, avoids many of the problems with earlier generators. It has the colossal period of 219937-1 iterations (>43), is proven to be equidistributed in (up to) 623 dimensions (for 32-bit values), and runs faster than other statistically reasonable generators. It is now increasingly becoming the random number generator of choice for statistical simulations and generative modeling. SFMT, SIMD-oriented Fast Mersenne Twister, a variant of Mersenne twister, is faster even if it's not compiled with SIMD
SIMD

In computing, SIMD is a technique employed to achieve data level parallelism....
 support.

The native Mersenne twister is not considered suitable for use in all cryptographic
Cryptography

Cryptography is the practice and study of hiding information. In modern times cryptography is considered a branch of both mathematics and computer science and is affiliated closely with information theory, computer security and engineering....
 applications. A variant has been proposed as a cryptographic cipher.

Cryptographically secure pseudorandom number generators

A PRNG suitable for cryptographic
Cryptography

Cryptography is the practice and study of hiding information. In modern times cryptography is considered a branch of both mathematics and computer science and is affiliated closely with information theory, computer security and engineering....
 applications is called a cryptographically secure PRNG (CSPRNG). The difference between a PRNG and a CSPRNG is not simple: a CSPRNG must meet certain design principles and be resistant to known attacks. Years of review are required before such an algorithm can be certified and it is still possible attacks will be discovered in the future.

Some classes of CSPRNGs include the following:

  • Stream cipher
    Stream cipher

    In cryptography, a stream cipher is a symmetric key algorithm cipher where plaintext bits are combined with a pseudorandom cipher bit stream , typically by an exclusive-or operation....
    s
  • block cipher
    Block cipher

    In cryptography, a block cipher is a symmetric key algorithm cipher which operates on fixed-length groups of bits, termed blocks, with an unvarying transformation....
    s running in counter or output feedback mode.
  • Special designs with a security proof. For example Blum Blum Shub has a strong security proof, although the proof is conditional and requires that some internal values remain secret from any attacker. Moreover, Blum Blum Shub is too slow for many applications.
  • PRNGs that have been designed specifically to be cryptographically secure, such as Microsoft
    Microsoft

    Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
    's Cryptographic Application Programming Interface
    Cryptographic Application Programming Interface

    The Cryptographic Application Programming Interface is an application programming interface included with Microsoft Windows operating systems that provides services to enable developers to secure Windows-based applications using cryptography....
     function CryptGenRandom
    CryptGenRandom

    CryptGenRandom is a CSPRNG function that is included in Microsoft's Cryptographic Application Programming Interface. In Win32 programs, Microsoft recommends its use anywhere random number generation is needed....
    , the Yarrow algorithm
    Yarrow algorithm

    The Yarrow algorithm is a cryptographically secure pseudorandom number generator. The name is taken from the yarrow plant, the stalks of which are dried and used as a randomising agent in I Ching divination....
     (incorporated in Mac OS X
    Mac OS X

    Mac OS X is a line of computer operating systems developed, marketed, and sold by Apple Inc., and since 2002 has been included with all new Macintosh computer systems....
     and FreeBSD
    FreeBSD

    FreeBSD is a Unix-like free software operating system descended from AT&T Unix via the Berkeley Software Distribution branch through the 386BSD and Berkeley Software Distribution#4.4BSD and descendants operating systems....
    ), and Fortuna
    Fortuna (PRNG)

    Fortuna is a cryptographically secure pseudorandom number generator devised by Bruce Schneier and Niels Ferguson. It is named after Fortuna , the Roman goddess of chance....
    .
  • Combination PRNGs which attempt to combine several PRNG primitive algorithms with the goal of removing any non-randomness.


BSI evaluation criteria

The German Federal Office for Information Security
Federal Office for Information Security

The Bundesamt f?r Sicherheit in der Informationstechnik is the Germany government agency in charge of managing computer and communication security for the German government....
 (BSI) has established four criteria for quality of deterministic random number generators. They are summarized here:

  • K1 — A sequence of random numbers with a high probability of containing no identical consecutive elements.
  • K2 — A sequence of numbers which is indistinguishable from 'true random' numbers according to specified statistical tests. The tests are the monobit test (equal numbers of ones and zeros in the sequence), poker test (a special instance of the chi-square test
    Chi-square test

    A chi-square test is any statistical hypothesis test in which the test statistic has a chi-square distribution when the null hypothesis is true, or any in which the probability distribution of the test statistic can be made to approximate a chi-square distribution as closely as desired by making the sample size large enough....
    ), runs test (counts the frequency of runs of various lengths), longruns test (checks whether there exists any run of length 34 or greater in 20 000 bits of the sequence) — both from BSI2 (AIS 20, v. 1, 1999) and FIPS (140-1, 1994), and the autocorrelation test. In essence, these requirements are a test of how well a bit sequence: has zeros and ones equally often; after a sequence of n zeros (or ones), the next bit a one (or zero) with probability one-half; and any selected subsequence contains no information about the next element(s) in the sequence.
  • K3 — It should be impossible for any attacker (for all practical purposes) to calculate, or otherwise guess, from any given sub-sequence, any previous or future values in the sequence, nor any inner state of the generator.
  • K4 — It should be impossible, for all practical purposes, for an attacker to calculate, or guess from an inner state of the generator, any previous numbers in the sequence or any previous inner generator states.


For cryptographic applications, only generators meeting the K4 standard are really acceptable.

Non-uniform generators

Numbers selected from a non-uniform probability distribution can be generated using a uniform distribution PRNG and a function that relates the two distributions.

First, one needs the cumulative distribution function of the target distribution : Note that . Using a random number from a uniform distribution c as the probability density to "pass by", we get so that is a number randomly selected from distribution .

For example, the inverse of cumulative Gaussian distribution with an ideal uniform PRNG with range (0, 1) as input would produce a sequence of (positive only) values with a Gaussian distribution; however
  • when using practical number representations the infinite "tails" of the distribution have to be truncated to finite values.
  • Repetitive recalculation of should be reduced by means such as ziggurat algorithm
    Ziggurat algorithm

    The ziggurat algorithm is an algorithm to generate random numbers from a non-uniform distribution . It belongs to the class of rejection sampling algorithms and can be used for choosing values from a Monotonic function probability distribution....
     for faster generation.


Similar considerations apply to generating other non-uniform distributions such as Rayleigh
Rayleigh distribution

In probability theory and statistics, the Rayleigh distribution is a continuous probability distribution. It can arise when a two-dimensional vector has elements that are normal distribution, are uncorrelated, and have equal variance....
 and Poisson
Poisson distribution

In probability theory and statistics, the Poisson distribution is a discrete probability distribution that expresses the probability of a number of events occurring in a fixed period of time if these events occur with a known average rate and Statistical independence of the time since the last event....
.

See also

  • Monte Carlo method
    Monte Carlo method

    Monte Carlo methods are a class of computational algorithms that rely on repeated random sampling to compute their results. Monte Carlo methods are often used when computer simulation physics and mathematics systems....
  • Pseudorandom binary sequence
    Pseudorandom binary sequence

    A binary sequence is a sequence of bits, for ,i.e. ones and zeros. A BS is pseudorandomness if its autocorrelation function:has only two values:...
  • Randomized algorithm
    Randomized algorithm

    A randomized algorithm or probabilistic algorithm is an algorithm which employs a degree of randomness as part of its logic. The algorithm typically uses Uniform distribution bits as an auxiliary input to guide its behavior, in the hope of achieving good performance in the "average case" over all possible choices of random bits....
  • Random number generator
  • Random number generator attack
    Random number generator attack

    The security of cryptographic systems depends on some secret data that is known to authorized persons but unknown and unpredictable to others. To achieve this unpredictability, some randomization is typically employed....
  • List of pseudorandom number generators
  • Randomness
    Randomness

    Randomness is a lack of order, purpose, Causality, or predictability. Randomness as defined by Aristotle is the situation, when a choice is to be made which has no logical component by which to determine or make the choice ....
  • Sophie Germain prime
    Sophie Germain prime

    In number theory, a prime number p is a Sophie Germain prime if 2p + 1 is also prime. For example, 23 is a Sophie Germain prime because it is a prime and 2 × 23 + 1 = 47, also prime....


External links

  • . A free (GPL
    GNU General Public License

    The GNU General Public License is a widely used free software license, originally written by Richard Stallman for the GNU project. The GPL is the most popular and well-known example of the type of strong copyleft license that requires derived works to be available under the same copyleft....
    ) C
    C (programming language)

    C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
     library that includes a number of PRNG algorithms.
  • : A free (GPL
    GNU General Public License

    The GNU General Public License is a widely used free software license, originally written by Richard Stallman for the GNU project. The GPL is the most popular and well-known example of the type of strong copyleft license that requires derived works to be available under the same copyleft....
    ) C
    C (programming language)

    C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
     Random Number Test Suite.
  • : Random-number generators (RNGs) implemented as Python extension types coded in C.
  • prng: A collection of algorithms for generating pseudorandom numbers as a library of C functions, released under the GPL.
  • - an analysis of the strength of PRNGs used to create TCP/IP sequence numbers by various operating system
    Operating system

    An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
    s using strange attractors. This is a good practical example of issues in PRNGs and the variation possible in their implementation.
    • - a follow-up article demonstrating some of the evolution of various PRNG algorithms over time.
  • Generating random numbers in Embedded Systems by Eric Uner


  • by Zvi Gutterman, Benny Pinkas, and Tzachy Reinman