Citizendia

A pseudorandom number generator (PRNG) is an algorithm for generating a sequence of numbers that approximates the properties of random numbers. In Mathematics, Computing, Linguistics and related subjects an algorithm is a sequence of finite instructions often used for Calculation 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. Randomness is a lack of order Purpose, cause, or predictability Although sequences that are closer to truly random can be generated using hardware random number generators, pseudo-random numbers are important in practice for simulations (e. In Computing, a hardware random number generator is an apparatus that generates Random numbers from a physical process g. , of physical systems with the Monte Carlo method), and are central in the practice of cryptography. Monte Carlo methods are a class of Computational Algorithms that rely on repeated Random sampling to compute their results Cryptography (or cryptology; from Greek grc κρυπτός kryptos, "hidden secret" and grc γράφω gráphō, "I write"

Most pseudo-random generator algorithms produce sequences which are uniformly distributed by any of several tests. Common classes of these algorithms are linear congruential generators, lagged Fibonacci generators, linear feedback shift registers and generalised feedback shift registers. A linear congruential generator ( LCG) represent one of the oldest and best-known Pseudorandom number generator Algorithms The theory behind them is easy A Lagged Fibonacci generator (LFG is an example of a Pseudorandom number generator. A linear feedback shift register (LFSR is a Shift register whose input bit is a linear function of its previous state Recent instances of pseudo-random algorithms include Blum Blum Shub, Fortuna, and the Mersenne twister. Blum Blum Shub ( BBS) is a Pseudorandom number generator proposed in 1986 by Lenore Blum, Manuel Blum and Michael Shub (Blum et Fortuna is a Cryptographically secure pseudorandom number generator (PRNG devised by Bruce Schneier and Niels Ferguson. 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

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 once titled an article, "The generation of random numbers is too important to be left to chance. Oak Ridge National Laboratory ( ORNL) is a multiprogram science and technology National laboratory managed for the United States Department of Energy by "[1] As John von Neumann joked, "Anyone who considers arithmetical methods of producing random digits is, of course, in a state of sin. "[2]

Contents

Periodicity

A PRNG can be started from an arbitrary starting state, using a seed state. A random seed (or seed state, or just seed) is a Number (or vector) used to initialize a Pseudorandom number generator. 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 bits. A bit is a binary digit, taking a value of either 0 or 1 Binary digits are a basic unit of Information storage and communication 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 any practical application.

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) are usually chosen to have periods of exactly 2n-1. A linear feedback shift register (LFSR is a Shift register whose input bit is a linear function of its previous state Linear congruential generators have periods that can be calculated by factoring. A linear congruential generator ( LCG) represent one of the oldest and best-known Pseudorandom number generator Algorithms The theory behind them is easy 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. In several fields of Mathematics the term permutation is used with different but closely related meanings g. [1]). 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.

It is an open question, and one central to the theory and practice of cryptography, 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. Cryptography (or cryptology; from Greek grc κρυπτός kryptos, "hidden secret" and grc γράφω gráphō, "I write" 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 a random sequence. The simplest examples of this dependency are stream ciphers, which (most often) work by exclusive oring the plaintext of a message with the output of a PRNG, producing ciphertext. In Cryptography, a stream cipher is a symmetric key Cipher where plaintext bits are combined with a Pseudorandom cipher bit stream ( Keystream In Cryptography, plaintext is the information which the sender wishes to transmit to the receiver(s The design of cryptographically adequate PRNGs is extremely difficult.

Problems with deterministic generators

In practice, the output from many common PRNGs exhibit artifacts which cause them to fail statistical pattern detection tests. In Natural science and Signal processing, an artifact is any perceived Distortion or other Data error caused by the instrument of observation These include, but are certainly not limited to

Defects exhibited by flawed PRNGs range from unnoticeable to absurdly obvious. The RANDU random number algorithm used for decades on mainframe computers was seriously flawed, and much research work of that period is less reliable than it might have been, as a result. RANDU is an infamous linear congruential Pseudorandom number generator which has been used since the 1960s Mainframes (often colloquially referred to as Big Iron) are Computers used mainly by large organizations for critical applications typically bulk data

Early approaches

An early computer-based PRNG, suggested by John von Neumann in 1946, is known as the middle-square method. Year 1946 ( MCMXLVI) was a Common year starting on Tuesday (link will display full 1946 calendar of the Gregorian calendar. 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 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 computer he was using, the "middle square" method generated numbers at a rate some two hundred times faster than reading numbers in from punch cards. ENIAC, short for Electronic Numerical Integrator And Computer, was the first general-purpose electronic Computer.

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

Mersenne twister

The 1997 invention of the Mersenne twister algorithm, by Makoto Matsumoto and Takuji Nishimura, avoids many of the problems with earlier generators. Year 1997 ( MCMXCVII) was a Common year starting on Wednesday (link will display full 1997 Gregorian calendar 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 It has the colossal period of 219937-1 iterations (likely far more than the number of computations that can be performed within the entire future existence of the universe), is proven to be equidistributed in (up to) 623 dimensions (for 32-bit values), and runs faster than other statistically reasonable generators. In Mathematics, a bounded sequence { s 1 s 2 s 3 …} of Real numbers is said to be equidistributed 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 support. In Computing, SIMD ( S ingle I nstruction M ultiple D ata is a technique employed to achieve data level parallelism as in a Vector [2]

Although suitable for other purposes, the Mersenne twister is not considered suitable for use in cryptography. Cryptography (or cryptology; from Greek grc κρυπτός kryptos, "hidden secret" and grc γράφω gráphō, "I write" A variant has been proposed as a cryptographic cipher. [3]

Cryptographically secure pseudorandom number generators

A PRNG suitable for cryptographic applications is called a cryptographically secure PRNG (CSPRNG). A cryptographically secure pseudo-random number generator ( CSPRNG) is a Pseudo-random number generator (PRNG with properties that make it suitable for use in Cryptography (or cryptology; from Greek grc κρυπτός kryptos, "hidden secret" and grc γράφω gráphō, "I write" 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:

BSI evaluation criteria

The German Federal Office for Information Security (BSI) has established a four-part criteria for quality of deterministic random number generators. The Bundesamt für Sicherheit in der Informationstechnik (abbreviated BSI - in English Federal Office for Information Security) is the German government They are summarized here:

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

Non-uniform generators

Non-uniform probability distributions can be generated using a uniform distribution PRNG and a non-linear function. For example the inverse of cumulative Gaussian distribution \operatorname{erf}^{-1}(x) with an ideal uniform PRNG with range (0, 1) as input x would produce a sequence of (positive only) values with a Gaussian distribution; however

Similar considerations apply to generating other non-uniform distributions such as Rayleigh and Poisson. In Probability theory and Statistics, the Rayleigh distribution is a Continuous Probability distribution. In Probability theory and Statistics, the Poisson distribution is a Discrete probability distribution that expresses the probability of a number of events

See also

Notes

  1. ^ Peterson, Ivars. A Binary sequence (BS is a sequence of N bits a_j for j=01N-1 i A randomized algorithm or probabilistic algorithm is an Algorithm which employs a degree of randomness as part of its logic A random number generator (often abbreviated as RNG is a computational or physical device designed to generate a sequence of Numbers or symbols that lack any The security of Cryptographic systems depends on some secret data that is known to authorized persons but unknown and unpredictable to others Computer Random number generators are important in Mathematics, Cryptography and Gambling. Randomness is a lack of order Purpose, cause, or predictability The Jungles of Randomness: A Mathematical Safari. Wiley, NY, 1998. (pp. 178) ISBN 0-471-16449-6
  2. ^ "Various techniques used in connection with random digits", Applied Mathematics Series, no. 12, 36-38 (1951).

References

External links

An embedded system is a special-purpose Computer system designed to perform one or a few dedicated functions often with Real-time computing constraints

Dictionary

pseudorandom number generator

-noun

  1. A device or algorithm that deterministically produces a succession of values that appear in an unpredictable sequence or apparently random order.
© 2009 citizendia.org; parts available under the terms of GNU Free Documentation License, from http://en.wikipedia.org
Dapyx Software network: MP3 Explorer | Ebook Manager | Zenithic