Lecture06 Random Number Generators
Lecture06 Random Number Generators
1
Random Number Generators
Random number generation is a method of
producing a sequence of numbers that lack any
discernible pattern.
2
What is Random?
What do we mean by Random?
•Uncorrelated (with what you're interested in)
•Quantum systems are truly random (we
believe)
•Some times we want repeatability from a
random number generator.
3
Pseudo RNGs
With the exception of some specially made add-
on cards, computer generated random numbers
are obviously not truly random.
4
Pseudo RNGs
PRNGs usually generate very long sequences of
random numbers. For example the commonly
used Mersenne Twister MT19937 has a sequence
length of 219937-1.
5
Pseudo RNGs
While long sequence length is a good property of
a PRNG, it is not sufficient to ensure that the
numbers generated are random.
6
Bit Properties
Ideally a generator will produce numbers that are
made up of completely random bits.
7
Generator Algorithms
Computer systems often come supplied with a
RNG built in.
eg rand() or random()
While these are fast and easy to use, they may not
be very random, have short repeat sequences and
may have strong correlation patterns.
8
Linear Congruential Generator
Many built-in RNGs use the Linear Congruential
Generator or LCG. This generator is very fast, has
low memory requirements but for most serious
applications where randomness actually matters,
it is useless.
9
Linear Congruential Generator
A sequence of random values Xn where:
Xn+1 = ( a Xn + c ) mod m
with well-chosen values of a, c, m
10
Linear Congruential Generator
Example Sequences:
1 1
3 (2*1 + 1 % 10) 8 (1*1 + 7 % 10)
7 (2*3 + 1 % 10) 5 (1*8 + 7 % 10)
5 (2*7 + 1 % 10) 2 (1*5 + 7 % 10)
1 (2*5 + 1 % 10) 9 (1*2 + 7 % 10)
3 (2*1 + 1 % 10) 6 (1*9 + 7 % 10)
7 (2*3 + 1 % 10) 3 (1*6 + 7 % 10)
5 (2*7 + 1 % 10) 0 (1*3 + 7 % 10)
… …
11
Linear Congruential Generator
Various sources use different parameters for the
LCG:
Numerical Recipes
m = 232 a = 1664525 c = 1013904223
GCC
m = 232 a = 1103515245 c = 12345
MMIX
m = 264 a = 6364136223846793005c = 1442695040888963407
12
Lagged Fibonacci Generator
The Lagged Fibonacci Generator is based on a
generalisation of the Fibonacci sequence
1, 1, 2, 3, 5, 8, 13, 21 ....
Xn = Xn-1 + Xn-2
13
Lagged Fibonacci Generator
The LFG generator is defined by:
See:
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html
15
Distributions
PRNGs usually produce random unsigned
integers which can easily be converted to a
uniform distribution [0,1).
17
Software Practicalities
What type of data primitives does the generator
use?
18
Software Practicalities
How much storage does the PRNG require?
19
Software Practicalities
How dependent is the generator on the
initialisation?
20
Truly Random Numbers
While most computers are incapable of producing
truly random numbers there are some modern
devices capable of generating a truly random
number.
21
Truly Random Numbers
The Quantis card is a physical random number
generator that exploits a quantum optics
process.
Truly Random Numbers
A simulation that uses a truly random number is
not repeatable.