ACML User Guide

Next: , Previous: FFTs, Up: Top


ACML Home page | ACML forum | Knowledge base | Email Feedback

6 Random Number Generators

Within the context of this document, a base random number generator (BRNG) is a mathematical algorithm that, given an initial state, produces a sequence (or stream) of variates (or values) uniformly distributed over the semi-open interval (0,1]. The period of the BRNG is defined as the maximum number of values that can be generated before the sequence starts to repeat. The initial state of a BRNG is often called the seed.

Note that this definition means that the value 1.0 may be returned, but the value 0.0 will not.

A pseudo-random number generator (PRNG) is a BRNG that produces a stream of variates that are independent and statistically indistinguishable from a random sequence. A PRNG has several advantages over a true random number generator in that the generated sequence is repeatable, has known mathematical properties and is usually much quicker to generate. A quasi-random number generator (QRNG) is similar to a PRNG, however the variates generated are not statistically independent, rather they are designed to give a more even distribution in multidimensional space. Many books on statistics and computer science have good introductions to PRNGs and QRNGs, see for example Knuth [6] or Banks [7]. All of the BRNGs supplied in the ACML are PRNGs.

In addition to standard PRNGs some applications require cryptologically secure generators. A PRNG is said to be cryptologically secure if there is no polynomial-time algorithm which, on input of the first l bits of the output sequence can predict the (l+1)st bit of the sequence with probability significantly greater than 0.5. This is equivalent to saying there exists no polynomial-time algorithm that can correctly distinguish between an output sequence from the PRNG and a truly random sequence of the same length with probability significantly greater than 0.5 [8].

A distribution generator is a routine that takes variates generated from a BRNG and transforms them into variates from a specified distribution, for example the Gaussian (Normal) distribution.

The ACML contains five base generators, (Base Generators), and twenty-three distribution generators (Distribution Generators). In addition users can supply a custom built generator as the base generator for all of the distribution generators (User Supplied Generators).

The base generators were tested using the Big Crush, Small Crush and Pseudo Diehard test suites from the TestU01 software library [15].



AMD Core Math Library (ACML) Version 4.3.0
Copyright (C) 2003-2009 Advanced Micro Devices, Inc., Numerical Algorithms Group Ltd.

AMD, the AMD Arrow logo, AMD Opteron, AMD Athlon and combinations thereof are trademarks of Advanced Micro Devices, Inc.