Download Further into Python: Random Numbers

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Lab #2-4
Follow-Up:
Further into Python
Part 3:
Random
Numbers
Part 3:
“Random”
Numbers
Part 3:
Pseudo-Random
Numbers
Why Random Numbers?
Traditional use: cryptography
http://www.diablotin.com/librairie/networking/puis/figs/puis_0604.gif
Why Random Numbers?
Recall Monte Carlo Estimation: Simulate the
behavior of a complicated system using random
numbers chosen from a reasonable distribution.
http://knowledgediscovery.jp/assets_c/2011/12/histogram-thumb-800x450-11.png
Two Kinds of Randomness
1) Chaos: A deterministic system that is so difficult
to predict that we can treat it as random
http://www.seas.harvard.edu/softmat/downloads/2005-06.pdf
2) True randomness: no underlying deterministic
process
Is true randomness
possible?
οὐδὲν χρῆμα μάτην
γίνεται, ἀλλὰ πάντα ἐκ
λόγου τε καὶ ὑπ’
ἀνάγκης
– Leucippus
Leucippus
(~ 480-420 BC)
Democritus
( 486-370 BC)
Is true randomness
possible?
Nothing occurs at
random, but everything
for a reason and by
necessity.
– Leucippus
Leucippus
(~ 480-420 BC)
Democritus
( 486-370 BC)
Why Does It Matter?
Is true randomness
possible?
We may regard the present state of the
universe as the effect of its past and the
cause of its future. An intellect which at a
certain moment would know all forces that
set nature in motion, and all positions of all
items of which nature is composed, if this
intellect were also vast enough to submit
these data to analysis, it would embrace in
a single formula the movements of the
greatest bodies of the universe and those
of the tiniest atom; for such an intellect
nothing would be uncertain and the future
just like the past would be present before
its eyes.
P.-S. Laplace
(1749-1827)
Is true randomness
possible?
The theory says a lot, but
does not really bring us any
closer to the secret of the
“old one”. I, at any rate, am
convinced that He does not
throw dice.
A. Einstein
(1879-1955)
Is true randomness
possible?
Copenhagen Interpretation: Yes
E. Schrödinger
(1887-1956)
Quantum Weirdness
and Consciousness
(“Free Will?”)
http://www.quantumconsciousness.org/penrose-hameroff/orchor.html
R. Penrose
(1931-)
Free Will Without
Quantum Weirdness
Freedom is therefore a fact, and among the
facts which we observe there is none clearer.
The truth is we change without ceasing...there
is no essential difference between passing from
one state to another and persisting in the same
state. … Just because we close our eyes to the
unceasing variation of every physical state, we
are obliged when the change has become so
formidable as to force itself on our attention,
to speak as if a new state were placed
alongside the previous one.
H. Bergson
(1859-1941)
Freedom as Flux
Πάντα ῥεῖ
( All things flow )
‒ Heraclitus
The truth is we change without ceasing...there
is no essential difference between passing from
one state to another and persisting in the same
state. …
H. Bergson
(1859-1941)
Heraclitus
(~535-475 BC)
Two Models for Generating
Random Numbers
Two Methods for Generating
Random Numbers
Special-purpose
hardware (rare)
Numerical “recipes”
(Algorithms)
Generating PseudoRandom Numbers
Linear Congruential Method:
• Start with arbitrary “seed” value x
• Multiply x by another number a and add a third
number c
• Divide by another number m and take the
remainder
• Remainder is new x; repeat
xnew = (a xold + c) rem m
Generating PseudoRandom Numbers
Linear Congruential Method:
• Start with arbitrary “seed” value x
• Multiply x by another number a and add a third
number c
• Divide by another number m and take the
remainder
• Remainder is new x; repeat
xnew = (a xold + c) mod m
# Generates N pseuedo-random numbers using the Linear
# Congruential Method
def lincongr(n):
# Arbitrary constants
A
= 5
C
= 11
# should have no common divisor with A
M
= 7
SEED = 0
x = SEED
for k in range(n):
print(x)
x = (A * x + C) % M
remainder (mod)
Output for N = 5
def lincongr(n):
# Arbitrary constants
A
= 5
C
= 11
M
= 7
SEED
= 0
x = SEED
for k in range(n):
print(x)
x = (A * x + C) % M
0
4
3
5
1
2
Output for N = 20
def lincongr(n):
# Arbitrary constants
A
= 5
C
= 11
M
= 7 # So this is the maximum!
SEED
= 0
x = SEED
for k in range(n):
print(x)
x = (A * x + C) % M
0
4
3
5
1
2
0
4
3
5
1
2
0
4
3
5
1
2
0
4
http://en.wikipedia.org/wiki/Linear_congruential_generator
Yields a Uniform Distribution
Normal (Gaussian) Distributions
• Shape is given by
i.e., something that reaches
a peak at x = 0 and tapers off rapidly as x grows positive
or negative:
• How can we build such a distribution from our
uniformly-distributed random numbers?
Box-Muller-Gauss Method for
Normal Distributions with Mean m
And Standard Deviation s
• Start with two uniform, independent random
distributions:
• a from 0 to 2p
• r from 0 to 1
• Then compute
• Obtain two normal distributions
• b sin(a) + m
• b cos(a) + m
Exponential Distributions
• Common pattern is exponentially decaying PDF, also
called 1/f noise (a.k.a. pink noise)
• noise = random
• f = frequency; i.e., larger events are less common
• pink because uniform distribution is “white” (white
light = all frequencies)
• “Universality” is a current
topic of controversy
(Shalizi
2006)
Exponential Method for PDF |k|ekt
where t > 0, k < 0
• Start with uniform random r
between 0 and 1
• Compute ln(r) / k
• E.g., ln(r) / (-2) gives 1/f noise
Concluding Topics
• Where do e and ln come from ?
• The Black Swan!