Cp01 Random
Cp01 Random
36 possibilities
6 times for 7
1 2 3
1 2 3 4
4
5
5
6
6
7
2 3 4 5
3 4 5 6
4 5 6 7
7
8
8
9
9
10
5 6 7 8
10 11
Stochastic processes
Complex systems (science)
Numerical integration
Risk management
6 7 8 9 10 11 12
Financial planning
Cryptography
How do we do that?
You let the computer to throw the coin and record
Part 1
the outcome
You need a program that generates randomly a
variable
Tables
Tables
Most significant
by RAND
11
00000
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
.....
10097
37542
08422
99019
12807
66065
31060
85269
63573
73796
98520
11805
83452
88685
99594
32533
04805
68953
02529
99970
74717
10805
77602
32135
45753
17767
05431
99634
40200
67348
76520
64894
19645
09376
80157
34072
45571
02051
05325
03529
14905
39808
06288
86507
87517
13586
74296
09303
70715
36147
76850
82406
65692
47048
64778
68607
27732
98083
58401
64969
34673
24805
23209
38311
64032
36697
35303
68665
90553
35808
22109
50725
13746
36766
91826
54876
24037
02560
31165
36653
36170
42614
74818
57548
34282
40558
68248
70078
67951
08928
80959
20636
15953
88676
98951
65813
86799
73053
28468
60935
60970
29405
18475
90364
93785
09117
10402
34764
74397
16877
39885
07439
85247
28709
20344
93433
24201
40610
76493
61368
39292
00822
35080
04436
12171
11199
23403
18623
83491
35273
50500
52775
68711
29609
23478
74945
91665
33606
27659
76833
29170
09732
88579
25624
88435
73998
67851
77817
11062
34113
12
http://www.toshiba.co.jp/about/press/2008_02/pr0702.htm
13
14
pseudo RNG!
1. randomness
2. knowledge of the distribution.
2. long period
3. produce the same sequence if started with same initial
conditions
4. fast
15
16
ax + c
xi = mod(axi 1 + c, M ) = remainder i 1
0 xi 1 < M
M
congruential methods
2.
note:
mod(b, M ) = b int(b / M ) * M
17
18
Example:
xi = mod(axi 1 + c, M )
mod(b, M ) = b int(b / M ) * M
yi = xi /( M 1)
Scale results from xi on [0,1] to yi on [A,B]
yi = A + ( B A) xi
19
20
xi = mod(axi 1 + c, M )
a = 16,807, c = 0, M = 2,147,483,647
for c = 0 multiplicative congruential generator:
21
22
Other Generators
9 Nonlinear Congruential Generators
Plots:
24
xk =
1
N
near-neighbor correlation
k
i
i =1
1
N
1
k +1
x x
i =1
http://csrc.nist.gov/groups/ST/toolkit/rng/index.html
i i+k
http://www.stat.fsu.edu/pub/diehard/
1
4
25
rand
drand48
random
rn
NetLib: http://www.netlib.org/liblist.html
srand
drand
GAMS: http://gams.nist.gov/
1. call SEED
Changes the starting point of the
pseudorandom number generator.
2. call RANDOM
Returns a pseudorandom number
greater than or equal to zero and
less than one from the uniform
distribution.
28
rand()
int main ()
{
int nmax=10;
/* generate 10 random numbers*/
int i1=1, i2=6, irandom;
srand (123);
/* initial seed */
//srand(time(NULL)); // better to "randomize" seed values
random_i = i1 + (rand()%(i2-i1+1));
a better method to do the same
random_i = i1 + int(1.0*(i2-i1+1)*rand()/(RAND_MAX+1.0));
Generating real random numbers between 0.0 and 1.0
drandom = 1.0*rand()/(RAND_MAX+1);
3
4
6
1
6
2
6
3
5
3
29
Example
120
100
80
60
40
20
0
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
32
bins
Example:
1200
1.0
0.8
random sequences xi
1000
and yi
random number
600
distribution
0.6
y(i)
800
0.4
0.2
400
0.0
0.0
200
0.2
0.4
0.6
0.8
1.0
x(i)
5000 points,
4
k-th momentum <x >=0.1991
near-neighbor correlation = 0.2507 34
0
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
33
bins
correlation test
Example:
1.0
2D distribution for
0.8
0.6
x(i+5)
1400
Example
140
games.
Jacobs, B. C++ Random Numbers. A tutorial for
0.2
0.2
0.4
0.6
0.8
1.0
x(i)
5000 points,
4
k-th momentum <x >=0.1991
near-neighbor correlation = 0.2507
36
Practice 1 (homework)
srand(iseed)
1.
rand()
2.
3.
4.
distribution
5.
37
38
Part 2
integration
Can MC approach compete with sophisticated
methods?
40
Integration by rejection
hit and miss method
1.
loop over N
2.
3.
4.
5.
41
42
One more
example
I = f ( x)dx = (b a ) f
a
I = f ( x )dx (b a )
a
f2 f
S = ( b a )
Compute N pairs of random numbers xi and yi with
0.0 x 2.0 and -1.5 y 1.5.
n n
Fn = A +
1
f =
N
43
r = 0.0;
for (int i = 1; i <= n; i=i+1)
{
u = 1.0*rand()/(RAND_MAX+1); // random between 0.0 and 1.0
x = a + (b-a)*u;
// random x between a and b
r = r + f(x);
}
r = r*(b-a)/n;
45
return r;
Example
n
64
128
256
512
1024
2048
4096
8192
16384
32768
65536
131072
262144
524288
1048576
2097152
4194304
x
0
x
cos(10 x 2 )dx = 0.0003156
+1
Trapez.
Simpson
Monte Carlo
0.004360 -0.013151 0.081207
0.001183 -0.001110 0.155946
0.000526 -0.000311 0.071404
0.000368 0.000006 0.002110
0.000329 0.000161 -0.004525
0.000319 0.000238 -0.010671
0.000316 0.000277 0.000671
0.000316 0.000296 -0.009300
0.000316 0.000306 -0.009500
0.000316 0.000311 -0.005308
0.000316 0.000313 -0.000414
0.000316 0.000314 0.001100
0.000316 0.000315 0.001933
0.000316 0.000315 0.000606
0.000316 0.000315 -0.000369
0.000316 0.000316 0.000866
0.000316 0.000316 0.000330
f ( x ) S
i
i =1
f (x )
f2
i =1
1
=
N
f
i =1
( xi )
44
1
N
Example
sin( x ) dx = 2.0
0
n
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536
Trapez.
1.570796
1.896119
1.974232
1.993570
1.998393
1.999598
1.999900
1.999975
1.999994
1.999998
2.000000
2.000000
2.000000
2.000000
2.000000
2.000000
Simpson
2.094395
2.004560
2.000269
2.000017
2.000001
2.000000
2.000000
2.000000
2.000000
2.000000
2.000000
2.000000
2.000000
2.000000
2.000000
2.000000
Monte Carlo
2.483686
2.570860
2.140117
1.994455
2.005999
2.089970
2.000751
2.065036
2.037365
1.988752
1.989458
1.991806
2.000583
1.987582
1.991398
1.997360
46
I = f ( x )dx (b a )
a
1
N
N /2
( f ( x ) + f ( a + (b x ) )
i =1
48
dx dyf ( x, y) (b a)(d c) N f ( x , y )
i
i =1
49
nD case
Error in Simson
1D case
Error in Simson
nD case
Example
1/ n
1
4
N
50
dx dx dx dx dx dx ( x
1
N
1
N
1
N4
// step 2: integration
for (i = 1; i <= m; i=i+1)
{
//
calculate random x[] points
for (j = 0; j < n; j = j+1)
{
x[j] = a[j] + (b[j]-a[j])*rand()/(RAND_MAX+1);
}
r = r + fn(x,n);
}
r = r*p/m;
return r;
}
7D Integral
8
11.478669
16
12.632578
32
13.520213
64
13.542921
128
13.263171
256
13.178140
512
12.850561
1024
12.747383
2048
12.745207
4096
12.836080
8192
12.819113
16384
12.790508
32768
12.765735
65536
12.812653
131072
12.809303
262144
12.831216
524288
12.832844
total elapsed time = 1 seconds
52
Practice: Integration
Use Monte Carlo integration (both rejection and mean
value methods) to evaluate
3
exp( x )dx
sin(2 x
and
)dx
Non-uniform distributions
dx dx dx dx dx dx ( x
1
Part 3
+x2 + K + x7 ) 2 dx7
53
Non-uniform distributions
radioactive decay
55
56
Example
double w(double);
int main ()
{
int nmax = 50000;
double xmin=0.0, xmax=2.0, ymin, ymax;
double x, y;
3000
ymax = w(xmin);
ymin = w(xmax);
srand(time(NULL));
for (double i=1; i <= nmax; i=i+1)
{
x = xmin + (xmax-xmin)*rand()/(RAND_MAX+1);
y = ymin + (ymax-ymin)*rand()/(RAND_MAX+1);
if (y > w(x)) continue;
file_3 << " " << x << endl;
/* output to a file */
}
system("pause");
return 0;
}
/* Probability distribution w(x) */
double w(double x)
{
return exp(0.0-1.0*x*x);
}
non-uniform distribution
2
w(x) = exp(-x )
2500
2000
1500
1000
500
0
0.0
57
0.2
0.4
0.6
0.8
1.0
1.2
1.4
1.6
1.8
2.0
58
bins
Example
10000
energy = 100.0
sigma = 20.0
Works if the function you are trying to use for a distribution has
an inverse.
8000
Let
6000
4000
p( y )dy = p( x )dx
or
p( y ) = p( x ) dx / dy
dx
= f ( y ) x = f ( y )dy = F ( y )
dy
then
y = F 1 ( x ) provides the non-uniform distribution
2000
0
40
60
80
100
120
140
160
59
60
energy
10
p( y ) = exp( y )
dx
= exp( y )
dy
61
62
I = f ( x )dx =
f ( x)
p( x )dx
p( x)
of calculations.
b
I = w( x ) f ( x )dx (b a )
1
N
f ( xi )
p( x )
i =1
w( x ) f ( x )
i =1
I (b a )
1
N
63
w( xi +1 )
i
w( xi )
where i is a random number from a uniform distribution
64
Random Walk
Part 4
Random Walk
11
67
68
2.
3.
69
read
dav=0.0
do it=1,itests
x=0
y=0
do is=1,isteps
iway= int(0.0+4.0*rand())
if(iway.eq.0) x = x+1
if(iway.eq.1) x = x-1
if(iway.eq.2) y = y+1
if(iway.eq.3) y = y-1
c
write(7,101) x,y
end do
d = sqrt((float(x))**2+(float(y))**2)
dav = dav + d
end do
dav = dav/float(itests)
write(*,100) itests, isteps, dav
20
20
2D random walk
2D random walk
15
10
10
example
15
example
70
-5
-5
-5
10
15
20
-5
71
10
15
20
72
12
Examples of applications:
Spread of inflectional diseases and effects of
immunization
Spreading of fire
20
18
16
14
12
10
8
6
4
2
0
0
10 12 14 16 18 20 22 24
75
24
22
20
18
16
14
12
22
74
24
10
8
6
4
2
0
0
10 12 14 16 18 20 22 24
76
Example: (Fortran)
24
22
20
18
16
14
12
73
10
8
6
4
2
0
0
do while (out.eq.0)
skip=0
iway = int(1.0+4.0*rand())
c check can we use this iway or not
if(abs(iway iold).eq.2) skip=1
c if step is allowed the walker goes
if(skip.eq.0) then
nsteps = nsteps+1
if(iway.eq.1) x = x+1
if(iway.eq.3) x = x-1
if(iway.eq.2) y = y+1
if(iway.eq.4) y = y-1
c check conditions to be out of n*n city
if(x.le.0.or.x.ge.ncity) out=1
if(y.le.0.or.y.ge.ncity) out=1
iold=iway
end if
end do
78
13
10
Polymer simulation
69 monomers
4
2
0
-2
-4
-6
-8
-10
-2
24 monomers
0
-2
-4
-6
-8
-2
12
14
16
18
80
179 monomers
-30
-25
-20
-15
-10
-5
x
81
24
22
20
18
16
14
12
10
8
6
4
2
0
-2
-4
-6
-8
-10
do while (out.eq.0)
xold=x
yold=y
c = rand()
if(c.le.0.25) x = x+1
if(c.gt.0.25.and.c.le.0.50) x=x-1
if(c.gt.0.50.and.c.le.0.75) y=y+1
if(c.gt.0.75) y=y-1
c is the (x,y) site vacant them accept the last step
if(a(x,y).eq.0) then
a(x,y)=1
n = n+1
else
x=xold
y=yold
end if
c*** exit conditions
c no more available steps around new x,y where to go
if(a(x+1,y)*a(x,y+1)*a(x-1,y)*a(x,y-1).eq.1) out=1
83
end do
82
Polymer simulation
0.30
average
polymer size = 72
end-to-end size = 12
0.25
0.20
probability
-4
10
79
0.15
0.10
0.05
0.00
0
50
polymer size
84
14
Example
12 6
V ( r ) = 4
r
r
Find positions of n atoms that gives the min value of the total potential.
Method: Monte-Carlo variations
examples:
n=19
n=7
then consider
y ' = y + h( 2ui +1 1)
g ( x' , y ' )
and generate
g ( x, y )
some random number
q=
x ' = x + h( 2ui 1)
Example
The French naturalist and mathematician Comte de Buffon showed that
the probability that a needle of length L thrown randomly onto a grid of
parallel lines with distance DL apart intersects a line is 2L/(D*).
c*** loop over trials
hit = 0
do it=1,itests
x0 = float(N)*D*rand()
k = int(x0/D)
x1 = x0 - D*float(k)
x2 = D - x1
x = min(x1,x2)
dx = 0.5*abs(L*cos(1.0*pi*rand()))
if(dx.ge.x) hit = hit + 1
end do
c*** average number of hits
ahit = float(hit)/float(itests)
buffon = (2*L)/(pi*D)
-1
-1
-1
-1
86
87
Example
investigate a simple problem that generated much attention several years
ago and for which many mathematicians obtained an incorrect solution. The
problem was the analysis of the optimal strategy in a television game show
popular at the time. The show was Lets Make a Deal with host Monty Hall.
At some point in the show, a contestant was given a choice of selecting one
of three possible items, each concealed behind one of three closed doors.
The items varied considerably in value. After the contestant made a choice
but before the chosen door was opened, the host, who knew where the
most valuable item was, would open one of the doors not selected and
reveal a worthless item. The host would then offer to let the contestant
select a different door from what was originally selected. The question, of
course, is should the contestant switch? A popular magazine writer Marilyn
vos Savant concluded that the optimal strategy is to switch. This strategy is
counterintuitive to many mathematicians, who would say that there is
nothing to be gained by switching; that is, that the probability of improving
the selection is 0.5. Study this problem by Monte Carlo methods. What is
the probability of improving the selection by switching? Be careful to
understand all of the assumptions, and then work the problem analytically
89
also. (A Monte Carlo study is no substitute for analytic study.)
88
15
Example
The gambler's ruin problem. Suppose that a person decides to try to
increase the amount of money in his/her pocket by participating in some
gambling. Initially, the gambler begin with $m in capital. The gambler
decides that he/she will gamble until a certain goal, $n (n>m), is achieved
or there is no money left (credit is not allowed). On each throw of a coin
(roll of the dice, etc.) the gambler either win $1 or lose $1. If the gambler
achieves the goal he/she will stop playing. If the gambler ends up with no
money he/she is ruined.
What are chances for the gambler to achieve the goal as a function of k,
where k=n/m?
How long on average will it take to play to achieve the goal or to be
ruined?
91
92
10000
10
100
1.026E-01
8.974E-01
9.019E+02
tests:
100000
initial:
10
goal:
100
win
= 9.44000E-03
loose = 9.90560E-01
games = 4.51806E+02
Example
An industrious physics major finds a job at a local fast food restaurant to
help him pay his way through college. His task is to cook 20 hamburgers
on a grill at any one time. When a hamburger is cooked, he is supposed
to replace it with uncooked hamburger. However, our physics major does
not pay attention to whether the hamburger is cooked or not. His method
is to choose a hamburger at random and replace it by an uncooked one.
He does not check if the hamburger that he removes from the grill is
ready.
95
94
96
16
nburger = 20
tsteps = 100000
bmin
bmax
= 10
= 20
c initialization (burgers)
do i = 1, nburger
b(i) = 0
end do
c initialization (time distribution)
do i = 1, tsteps
tcook(i) = 0
end do
c other variables
cook1 = 0
cook2 = 0
cook3 = 0
tmax = 0
c initial seed number calculated from current time
call gettim(ihour,imin,isec,imsec)
init = imsec*isec*imin+ihour
call srand(init)
97
do i = 1, tsteps
x = 1.0 + rand()*real(nburger)
burger = int(x)
do j = 1, nburger
if(j.eq.burger) then
tcook(b(j)+1) = tcook(b(j)+1) + 1
if(b(j)+1.gt.tmax) tmax = b(j)+1
if(b(j).lt.bmin) cook1 = cook1 + 1
if(b(j).ge.bmin.and.b(j).le.bmax)
cook2 = cook2 + 1
if(b(j).gt.bmax) cook3 = cook3 + 1
b(j) = 0
else
b(j) = b(j) + 1
end if
end do
end do
write(*,102) tmax
c calculate and write chances for undercooked, good c
cooked, overcooked burgers
rcook1 = real(cook1)/real(cook1+cook2+cook3)
rcook2 = real(cook2)/real(cook1+cook2+cook3)
rcook3 = real(cook3)/real(cook1+cook2+cook3) 98
write(*,101) rcook1, rcook2, rcook3
60
50
40
burgers
30
20
10
0
0
10
20
99
30
40
50
60
70
80
90
100
100
6000
5000
9 integration
9 statistical physics
9 aerodynamic
4000
9 quantum chromodynamics
burgers
3000
9 cellular automata
9 percolation
2000
1000
0
0
10
20
30
40
50
60
70
80
90
100
101
102
17
Cellular automation
Cellular automata dynamic computational models that are discrete
in space, state and time.
What is a chance to
encounter a bear?
What data do you need
for your simulation?
104
18