18
1 1 Random Processes Monte Carlo Simulation 2 Random or Stochastic processes Random or Stochastic processes You cannot predict from the observation of one event, how the next will come out Examples: Coin: the only prediction about outcome – 50% the coin will land on its tail Dice: In large number of throws – probability 1/6 3 Question: What is the most probable number for the sum of two dice? 36 possibilities 6 times – for 7 12 11 10 9 8 7 6 11 10 9 8 7 6 5 10 9 8 7 6 5 4 9 8 7 6 5 4 3 8 7 6 5 4 3 2 7 6 5 4 3 2 1 6 5 4 3 2 1 4 Applications for MC simulation Stochastic processes Complex systems (science) Numerical integration Risk management Financial planning Cryptography 5 6

Random Processes Random or Stochastic processes

  • Upload
    others

  • View
    31

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Random Processes Random or Stochastic processes

1

1

Random Processes

Monte Carlo Simulation2

Random or Stochastic processesRandom or Stochastic processes

You cannot predict from the observation of one event, how the next will come out

Examples:

Coin: the only prediction about outcome –50% the coin will land on its tail

Dice: In large number of throws –probability 1/6

3

Question: What is the most probable number for the sum of two dice?

36 possibilities

6 times – for 7

121110987611109876510987654987654387654327654321654321

4

Applications for MC simulation

Stochastic processes

Complex systems (science)

Numerical integration

Risk management

Financial planning

Cryptography

5 6

Page 2: Random Processes Random or Stochastic processes

2

7 8

9

How do we do that?

You let the computer to throw “the coin” and record the outcome

You need a program that generates randomly a variable… with relevant probability distribution

Part 1

Random number generators

11

Sources of Random Numbers

Tables

Hardware (external sources of random numbers –generates random numbers from a physics process.

Software (source of pseudorandom numbers)

12

Tables

Most significant

A Million Random Digits with 100,000 Normal Deviatesby RAND

00000 10097 32533 76520 13586 34673 54876 80959 09117 39292 7494500001 37542 04805 64894 74296 24805 24037 20636 10402 00822 9166500002 08422 68953 19645 09303 23209 02560 15953 34764 35080 3360600003 99019 02529 09376 70715 38311 31165 88676 74397 04436 2765900004 12807 99970 80157 36147 64032 36653 98951 16877 12171 7683300005 66065 74717 34072 76850 36697 36170 65813 39885 11199 2917000006 31060 10805 45571 82406 35303 42614 86799 07439 23403 0973200007 85269 77602 02051 65692 68665 74818 73053 85247 18623 8857900008 63573 32135 05325 47048 90553 57548 28468 28709 83491 2562400009 73796 45753 03529 64778 35808 34282 60935 20344 35273 8843500010 98520 17767 14905 68607 22109 40558 60970 93433 50500 7399800011 11805 05431 39808 27732 50725 68248 29405 24201 52775 6785100012 83452 99634 06288 98083 13746 70078 18475 40610 68711 7781700013 88685 40200 86507 58401 36766 67951 90364 76493 29609 1106200014 99594 67348 87517 64969 91826 08928 93785 61368 23478 34113.....

Page 3: Random Processes Random or Stochastic processes

3

13http://www.toshiba.co.jp/about/press/2008_02/pr0702.htm 14

15

Software - Random Number Generators

There are no true random number generators but pseudo RNG!

Reason: computers have only a limited number of bits to represent a number

It means: the sequence of random numbers will repeat itself (period of the generator)

16

Good Random Number Generators

Other (still important) issues1. independent of the previous number2. long period3. produce the same sequence if started with same initial

conditions4. fast

Two important issues:1. randomness2. knowledge of the distribution.

17

Two basic techniques for RNG

The standard methods of generating pseudorandom numbers use modular reduction in congruentialrelationships. Two basic techniques for generating uniform random numbers: 1. congruential methods2. feedback shift register methods. For each basic technique there are many variations.

18

Linear Congruent Method for RNG

Generates a random sequence of numbers {x1, x2, …xk} of length M over the interval [0,M-1]

starting value x0 is called “seed”

coefficients a and c should be chosen very carefully

note:

⎟⎠⎞

⎜⎝⎛ +=+= −

− McaxremainderMcaxx i

ii1

1 ),mod(

MMbbMb *)/int(),mod( −=

the method was suggested by D. H. Lehmer in 1948

Mxi <≤ −10

Page 4: Random Processes Random or Stochastic processes

4

19

Example:

a=4, c=1, M=9, x1=3 x2 = 4x3 = 8x4 = 6x5-10 = 7, 2, 0, 1, 5, 3

MMbbMbMcaxx ii

*)/int(),mod(),mod( 1

−=+= −

interval: 0-8, i.e. [0,M-1]period: 9 i.e. M numbers (then repeat)

20

Random Numbers on interval [A,B]

Scale results from xi on [0,M-1] to yi on [0,1]

Scale results from xi on [0,1] to yi on [A,B]

ii xABAy )( −+=

)1/( −= Mxy ii

21

Magic numbers for Linear Congruent Method

M (length of the sequence) is quite large

However there is no overflow(for 32 bit machines M=231 ≈ 2*109)

Good “magic” number for linear congruent method:

a = 16,807, c = 0, M = 2,147,483,647for c = 0 “multiplicative congruential generator”:

),mod( 1 Mcaxx ii += −

22

Other Linear Congruential Generators

Multiple Recursive Generatorsmany versions including “Lagged Fibonacci”

Matrix Congruential Generators

Add-with-Carry, Subtract-with-Borrow, and Multiply -with-Carry Generators

23

Other Generators

Nonlinear Congruential Generators

Feedback Shift Register Generators

Generators Based on Cellular Automata

Generators Based on Chaotic Systems

James E. Gentle – “Random Number Generation and Monte Carlo Methods

Second edition - 2004

24

How can we be check the RNG?

Plots:2D figure, where xi and yi are from two random sequences (parking lot test)

3D figure (xi, yi, zi)

2D figure for correlation (xi, xi+k)

Page 5: Random Processes Random or Stochastic processes

5

25

How can we check the RNG?Example of other assessments

Uniformity. A random number sequence should contain numbers distributed in the unit interval with equal probability. Use bins.

k-th momentum

near-neighbor correlation

111

1 +≈= ∑

= kx

Nx

N

i

ki

k

411

1

≈+=∑ ki

N

ii xx

N

26

Test Suites (most known) for RNG

the NIST Test Suite (NIST, 2000) includes sixteen tests

http://csrc.nist.gov/groups/ST/toolkit/rng/index.html

“DIEHARD Battery of Tests of Randomness (eighteen tests)

http://www.stat.fsu.edu/pub/diehard/

TestU01: includes the tests from DIEHARD and NIST and several other tests that uncover problems in some generators that pass DIEHARD and NIST

http://www.iro.umontreal.ca/~simardr/testu01/tu01.html

27

Software for RNG

C/C++ and Fortran (90,95) provide built-in uniform random number generators, but … except for small studies, these built-in generators should be avoided.A number of Fortran and C/C++ programs are available inStatLib: http://lib.stat.cmu.edu/NetLib: http://www.netlib.org/liblist.htmlGAMS: http://gams.nist.gov/GNU Scientific Library (GSL) http://www.gnu.org/software/gsl/IMSL (International Mathematics and Statistics Library) libraries contain a large number of RNGs

28

“Industrial” methods in C/C++ and Fortran

rand

random

drand48

rn

drand

srand

1. call SEEDChanges the starting point of the pseudorandom number generator.

2. call RANDOMReturns a pseudorandom number greater than or equal to zero and less than one from the uniform distribution.

29

Standard RNG in C++#include <cstdlib> librarysrand(seed) is used to initialize the RNGrand() returns a pseudo random integer in

the range 0 to RAND_MAX.RAND_MAX = 32767

Generating integer random numbers in a range i1 – i2:random_i = i1 + (rand()%(i2-i1+1));a better method to do the samerandom_i = i1 + int(1.0*(i2-i1+1)*rand()/(RAND_MAX+1.0));Generating real random numbers between 0.0 and 1.0drandom = 1.0*rand()/(RAND_MAX+1); 30

// generate integer random numbers between i1 and i2#include <iostream>#include <cstdlib>#include <cmath>#include <ctime>using namespace std;

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

for (int i=0; i < nmax; i=i+1){irandom = i1+rand()%(i2-i1+1);number between i1 & i2*/cout << " " << irandom << endl;

}system("pause");return 0;

}

Example: srand and rand in C++3461626353

Page 6: Random Processes Random or Stochastic processes

6

31

/* generate random numbers between 0.0 and 1.0 */#include <iostream>#include <iomanip>#include <cstdlib>#include <cmath>#include <ctime>using namespace std;int main (){

int nmax = 10; /*generate 10 random number*/double drandom;cout.precision(4);cout.setf(ios::fixed | ios::showpoint);

srand(4567); /* initial seed value */for (int i=0; i < nmax; i=i+1){

drandom = 1.0*rand()/(RAND_MAX+1); cout << "d = " << drandom << endl;

}system("pause");return 0;

}

Example: cont. for float

0.45630.28160.44520.86930.85140.64320.04930.99990.60170.0548

32

Example

0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.00

20

40

60

80

100

120

140uniformity of random numbers from rand for 1000 random numbers

num

ber o

f ran

dom

num

bers

in a

bin

bins

33

Example

0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.00

200

400

600

800

1000

1200

1400uniformity of random numbers from rand for 10000 random numbers

num

ber o

f ran

dom

num

bers

in a

bin

bins34

Example:

2D distribution for two random sequences xi

and yi

k-th moment of the random number distribution

0.0 0.2 0.4 0.6 0.8 1.00.0

0.2

0.4

0.6

0.8

1.0

two random sequences (parking lot test)

5000 points, k-th momentum <x4>=0.1991near-neighbor correlation = 0.2507

y(i)

x(i)

35

Example:

2D distribution for correlation (xi, xi+5)

0.0 0.2 0.4 0.6 0.8 1.00.0

0.2

0.4

0.6

0.8

1.0

5000 points, k-th momentum <x4>=0.1991near-neighbor correlation = 0.2507

correlation test

x(i+

5)

x(i)

36

Comment to rand in C++

“The version of rand() that comes with your C++ compiler will in all probability be a pretty simple generator and wouldn't be appropriate for scientific use. … It may well be random enough for use in simple programs and games.”

Jacobs, B. C++ Random Numbers. A tutorial for beginners, introducing the functions srand() and rand()

see also http://www.netlib.org/random/

Source codes for various random number generators in C and Fortran, including the RANLIB library

Page 7: Random Processes Random or Stochastic processes

7

37

Standard RNG in Fortransrand(iseed) seeds the random number generatorrand() Return real random numbers in the

range 0.0 through 1.0.Generating a real random number between 0.0 and 1.0call srand(iseed)x = rand()

There are very many good uniform and non-uniform random number generators written in Fortran.

38

Practice 1 (homework)

1. Write a program to generate random numbers using the linear congruent method

2. Plot 2D distribution for two random sequences xi and yi

3. Plot 2D distribution for correlation (xi, xi+4)

4. Evaluate 5-th moment of the random number distribution

5. Use some built-in RNG for problems 2-4.

Part 2

Monte Carlo Integration

40

Monte Carlo IntegrationMonte Carlo Integration

There are very many methods for numerical integration

Can MC approach compete with sophisticated methods?

Can we gain anything from integration by “gambling”?

41

Problem: HighProblem: High--Dimensional IntegrationDimensional Integration

Example: Integration for a system with 12 electrons.

3*12=36 dimensional integral

If 64 points for each integration then =6436 points to evaluate

For 1 Tera Flop computer = 1053 seconds

That is … 3 times more then the age of the universe!

42

Integration by rejectionhit and miss method

Example: area of a circleRadius: RArea of the square: 4R2

1. loop over N2. generate a pair of random numbers

x and y on [-1,1]3. if (x*x+y*y) < 1 then m=m+14. since Acircle/Asquare = m/N5. Acircle = m/N*Asquare = (m/N)*4R2

R

Page 8: Random Processes Random or Stochastic processes

8

43

One more example

Compute N pairs of random numbers xi and yi with 0.0 ≤x ≤2.0 and -1.5 ≤ y ≤1.5.

⎟⎠⎞

⎜⎝⎛ −= −+

NnnAFn

44

Integration by mean value

∫ −==b

a

fabdxxfI )()(

∑∑

∫ ∑

==

=

==

−−=Δ

Δ±−≈=

N

ii

N

ii

b

a

N

ii

xfN

fxfN

f

Nff

abS

SxfN

abdxxfI

1

22

1

22

1

)(1)(1

)(

)(1)()(

Traditional methods (Simpson, …) – N points are chosen with equal spacing. Monte Carlo method – random sampling

the error evaluation is based on the normal distribution

45

double int_mc1d(double(*f)(double), double a, double b, int n)/* 1D intergration using Monte-Carlo method for f(x) on [a,b]input: f - Function to integrate (supplied by a user)

a - Lower limit of integrationb - Upper limit of integrationn - number random points

output:r - Result of integration Comments: be sure that following headers are included

#include <cstdlib>#include <ctime>

*/{

double r, x, u;srand(time(NULL)); /* initial seed value (use system time) */

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 br = r + f(x);

}r = r*(b-a)/n;return r;

}

Example: 1D integration (C++)

46

Examplen Trapez. Simpson Monte Carlo2 1.570796 2.094395 2.4836864 1.896119 2.004560 2.5708608 1.974232 2.000269 2.140117

16 1.993570 2.000017 1.99445532 1.998393 2.000001 2.00599964 1.999598 2.000000 2.089970

128 1.999900 2.000000 2.000751256 1.999975 2.000000 2.065036512 1.999994 2.000000 2.0373651024 1.999998 2.000000 1.9887522048 2.000000 2.000000 1.9894584096 2.000000 2.000000 1.9918068192 2.000000 2.000000 2.000583

16384 2.000000 2.000000 1.98758232768 2.000000 2.000000 1.99139865536 2.000000 2.000000 1.997360

0.2)sin(0

=∫π

dxx

47

Examplen Trapez. Simpson Monte Carlo

64 0.004360 -0.013151 0.081207128 0.001183 -0.001110 0.155946256 0.000526 -0.000311 0.071404512 0.000368 0.000006 0.0021101024 0.000329 0.000161 -0.0045252048 0.000319 0.000238 -0.0106714096 0.000316 0.000277 0.0006718192 0.000316 0.000296 -0.009300

16384 0.000316 0.000306 -0.00950032768 0.000316 0.000311 -0.00530865536 0.000316 0.000313 -0.000414

131072 0.000316 0.000314 0.001100262144 0.000316 0.000315 0.001933524288 0.000316 0.000315 0.0006061048576 0.000316 0.000315 -0.0003692097152 0.000316 0.000316 0.0008664194304 0.000316 0.000316 0.000330

∫ =+

π

0

22 0.0003156)10cos(

1dxx

xx

48

many methods to increase accuracyExample: antithetic variates – using “mirror points”

( )∫ ∑=

−++−≈=b

a

N

iii xbafxf

NabdxxfI

2/

1)(()(1)()(

Antithetic variates have negative covariances, thus reducing the variance of the sum

more methods can be found in James E. Gentle – “Random Number Generation and Monte Carlo Methods

Second edition - 2004

Page 9: Random Processes Random or Stochastic processes

9

49

Multidimensional Monte Carlo

∫ ∫ ∑=

−−≅b

a

d

c

N

iii yxf

Ncdabyxdyfdx

1),(1))((),(

50

double int_mckd(double(*fn)(double[],int),double a[], double b[], int n, int m)

/* input is similar to 1D integration*/{

double r, x[n], p;int i, j;srand(time(NULL));/* initial seed value (use system time) */r = 0.0;p = 1.0;

// step 1: calculate the common factor pfor (j = 0; j < n; j = j+1) p = p*(b[j]-a[j]);

// step 2: integrationfor (i = 1; i <= m; i=i+1){

// calculate random x[] pointsfor (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;

}

Example: nD integration (C++)

51

Error in Monte Carlo integration

n

N

N

N

N

/1

4

4

1

1

1

1

⎟⎠⎞

⎜⎝⎛ case nD Simson in Error

case 1D Simson in Error

case nD Carlo-Monte in Error

case 1D Carlo-Monte in Error

at n 7 or 8 the error in Monte Carlo integration is similar to that of conventional scheme

52

Example

7D Integral8 11.478669

16 12.63257832 13.52021364 13.542921

128 13.263171256 13.178140512 12.8505611024 12.7473832048 12.7452074096 12.8360808192 12.819113

16384 12.79050832768 12.76573565536 12.812653

131072 12.809303262144 12.831216524288 12.832844

total elapsed time = 1 seconds

312.8333333)( 72

72

1

0

1

0

1

01

1

06

1

05

1

0432

1

01 =+++∫ ∫ ∫∫∫∫∫ dxxxxdxdxdxdxdxdx K

53

Practice: Integration

Use Monte Carlo integration (both rejection and mean value methods) to evaluate

and

Evaluate 7-D integral

∫ −3

0

)exp( dxx ∫5

0

2 )2sin( dxx

72

72

1

0

1

0

1

01

1

06

1

05

1

0432

1

01 )( dxxxxdxdxdxdxdxdx +++∫ ∫ ∫∫∫∫∫ K

Part 3

Non-uniform distributions

Page 10: Random Processes Random or Stochastic processes

10

55

Non-uniform distributions

Most situation in physics – random numbers with non-uniform distribution

radioactive decay

experiments with different types of distributions

Principal idea: Generating non-uniform random number distributions with a uniform random number generators

56

Method 1: von Neumann rejectionMethod 1: von Neumann rejectionGenerating non-uniform distribution with a probability distribution w(x)

• generate two random numbersxi on [xmin, xmax]yi on [ymin, ymax]

• if yi < w(xi), accept• if yi > w(xi), reject• The xi so accepted will

have the weighting w(x)

57

double w(double);int main (){int nmax = 50000; double xmin=0.0, xmax=2.0, ymin, ymax;double x, y;

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);

}

Example for w(x)=exp(-x2)

58

Example

0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.00

500

1000

1500

2000

2500

3000

non-uniform distribution w(x) = exp(-x2)

num

ber o

f ran

dom

num

bers

in a

bin

bins

59

Example

40 60 80 100 120 140 1600

2000

4000

6000

8000

10000energy = 100.0sigma = 20.0

norm

al e

nerg

y di

strib

utio

n

energy60

Method 2: Inversion method

Works if the function you are trying to use for a distribution has an inverse.

Let is some arbitrary distribution

From the fundamental transformation law of probabilities

or

Let p(x) is a uniform probability distribution

We need to solve the differential equation

then provides the non-uniform distribution)(1 xFy −=

)()( yfyp =

dxxpdyyp )()( = dydxxpyp /)()( =

)()()( yFdyyfxyfdydx ==⇒= ∫

Page 11: Random Processes Random or Stochastic processes

11

61

Example: exponential distribution

(take positive distribution)

)ln(

)exp()exp(

)exp(

)exp()(

xy

ydyyx

ydydx

yyp

−=

−→−=

−=

−=

Quite often analytic solutions are not feasible. However, very many program libraries have most common non-uniform distributions

y is a positive exponential distribution generated from a uniform distribution x

62

Practice: nonPractice: non--uniform distributionuniform distribution

Use the von Neumann rejection technique to generate a normal distribution of standard deviation 1.0

63

more on integration – importance of samplingor more attention to regions corresponding to large values of the integrand

function importance the called is density Thex over density yprobabilit a is where

)()(

)()()()(

xpxp

dxxpxpxfdxxfI

b

a

b

a∫∫ ==

Then with xi from the distribution with density p

∑=

−≈N

i i

i

xpxf

NabI

1 )()(1)(

64

The Metropolis algorithm

In 1953 Metropolis introduced “the idea of importance sampling” that can considerably improve speed and quality of calculations.

∑∫=

−≈=N

iii

b

a

xfxwN

abdxxfxwI1

)()(1)()()(

In the simplest version, where h is a step and ui is from a uniform random distribution The step is accepted if

where is a random number from a uniform distribution

)12(1 −+=+ iii uhxx

ii

i

xwxw α≥+

)()( 1

Part 4

Random Walk

66

Random Walk

A simple random walk is a sequence of unit steps where each step is taken in the direction of one of the coordinate axis, and each possible direction has equal probability of being chosen.

Random walk on a lattice:In two dimensions, a single step starting at the point with integer coordinates (x,y) would be equally likely to move to any of one of the four neighbors (x+1,y), (x-1,y), (x,y+1) and (x,y-1). In one dimension walk there are two possible neighborsIn three dimensions there are six possible neighbors.

Page 12: Random Processes Random or Stochastic processes

12

67

Random Walk simulates:Brownian motion(answer the question - how many collisions, on average, a particle must take to travel a distance R).Electron transport in metals, ……

68

69

Practice 2 (random walk)

1. Write a program that simulate a random 2D walk with the same step size . Four directions are possible (N, E, S, W).Your program will involve two large integers, M = the number of random walks to be taken and N = the maximum number of steps in a single walk.

2. Find the average distance to be from the origin point after N steps

3. Is there any finite bound on the expected number of steps before the first return to the origin?

70

integer*4 iu, it, is, itests, isteps, iway, x, yreal*4 rand, d, dav

read (*,*) itests, isteps…dav=0.0do it=1,itests

x=0y=0do is=1,isteps

iway= int(0.0+4.0*rand())if(iway.eq.0) x = x+1if(iway.eq.1) x = x-1if(iway.eq.2) y = y+1if(iway.eq.3) y = y-1

c write(7,101) x,yend dod = sqrt((float(x))**2+(float(y))**2)dav = dav + d

end dodav = dav/float(itests)write(*,100) itests, isteps, dav

Example: random walk (Fortran)

71

exam

ple

-5 0 5 10 15 20-5

0

5

10

15

20

2D random walk

y

x 72

exam

ple

-5 0 5 10 15 20-5

0

5

10

15

20

2D random walk

y

x

Page 13: Random Processes Random or Stochastic processes

13

73

Various models of random walk

Persistent random walk

Restricted random walk

Self-avoiding random walk

Examples of applications:

Spread of inflectional diseases and effects of immunization

Spreading of fire

74

A persistent random walk

A persistent random walk in 2 dimensions in a city with n*n blocks

Condition: the walker can not step back

Goal: find average number of steps to get out the city

75pers

iste

nt r

ando

m w

alk

in a

city

0 2 4 6 8 10 12 14 16 18 20 22 240

2

4

6

8

10

12

14

16

18

20

22

24persistent 2D random walk from the center of 24*24 city

y

x 76pers

iste

nt r

ando

m w

alk

in a

city

0 2 4 6 8 10 12 14 16 18 20 22 240

2

4

6

8

10

12

14

16

18

20

22

24persistent 2D random walk from the center of 24*24 city

y

x

77pers

iste

nt r

ando

m w

alk

in a

city

0 2 4 6 8 10 12 14 16 18 20 22 240

2

4

6

8

10

12

14

16

18

20

22

24persistent 2D random walk from the center of 24*24 city

y

x

Average number of blocks to go to leave the city with 24*24 blocksfrom the center: 92 blocksfrom a random point: 47 blocks

78

do while (out.eq.0)skip=0iway = int(1.0+4.0*rand())

c check can we use this iway or notif(abs(iway – iold).eq.2) skip=1

c if step is allowed the walker goesif(skip.eq.0) thennsteps = nsteps+1if(iway.eq.1) x = x+1if(iway.eq.3) x = x-1if(iway.eq.2) y = y+1if(iway.eq.4) y = y-1

c check conditions to be out of n*n cityif(x.le.0.or.x.ge.ncity) out=1if(y.le.0.or.y.ge.ncity) out=1iold=iway

end ifend do

Example: (Fortran)

Page 14: Random Processes Random or Stochastic processes

14

79

Polymer simulation

Random walk in 2 dimensions Condition: self-avoiding 2D random walk

80

-2 0 2 4 6 8 10 12 14 16 18-10

-8

-6

-4

-2

0

2

4

6

8

10

69 monomers

y

x

81

-4 -2 0 2 4 6-8

-6

-4

-2

0

2

24 monomers

y

x82

-30 -25 -20 -15 -10 -5 0 5-10-8-6-4-202468

1012141618202224

179 monomers

y

x

83

…do while (out.eq.0)xold=xyold=yc = rand()if(c.le.0.25) x = x+1if(c.gt.0.25.and.c.le.0.50) x=x-1if(c.gt.0.50.and.c.le.0.75) y=y+1if(c.gt.0.75) y=y-1

c is the (x,y) site vacant them accept the last stepif(a(x,y).eq.0) then

a(x,y)=1n = n+1else

x=xoldy=yold

end ifc*** exit conditionsc 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=1end do

Example: (from Fortran)

84

Polymer simulation

0 50 100 150 200 250 300 350 4000.00

0.05

0.10

0.15

0.20

0.25

0.30

averagepolymer size = 72end-to-end size = 12

prob

abilit

y

polymer size

Page 15: Random Processes Random or Stochastic processes

15

85

The Metropolis algorithm (cont.)

The metropolis sampling is most efficient for multidirectional problems.

In a traditional random walk all visiting points are equal. What is we want the random walker to spend more time in a specific region, e.g. where for a 2D walk g(x,y) is larger.

)12(')12('

1 −+=−+=

+i

i

uhyyuhxx

rejected is step the ifaccepted is step the if

number random some

generate and

consider then

αα

α

<≥

=

qq

yxgyxgq),()','(

86

Examplea group of atoms interact by Lennard-Jones potential

⎥⎥⎦

⎢⎢⎣

⎡⎟⎠⎞

⎜⎝⎛−⎟

⎠⎞

⎜⎝⎛=

612

4)(rr

rV σσε

Find positions of n atoms that gives the min value of the total potential. Method: Monte-Carlo variationsexamples: n=19 n=7

-1 0 1 2 3 4 5-1

0

1

2

3

4

5

y

x

-1 0 1 2-1

0

1

2

y

x

87

ExampleThe 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 D≥L apart intersects a line is 2L/(D*π).

c*** loop over trialshit = 0do it=1,itestsx0 = 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 doc*** average number of hits

ahit = float(hit)/float(itests)buffon = (2*L)/(pi*D)

88

Buffon problem for D=1enter numbers of tests10000enter numbers of intervals in the grid10enter the needle size L<10.5hit = 3.157E-01buffon = 3.183E-01

Buffon problem for D=1enter numbers of tests100000enter numbers of intervals in the grid50enter the needle size L<10.9hit = 5.717E-01buffon = 5.730E-01

89

Exampleinvestigate 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 Let’s 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 also. (A Monte Carlo study is no substitute for analytic study.) 90

c*** loop over trialswin1 = 0win2 = 0do it=1,itestsa(1) = rand()a(2) = rand()a(3) = rand()choice = 1 + int(3.0*rand())b(1) = a(choice)if(choice.eq.1) b(2) = max(a(2),a(3))if(choice.eq.2) b(2) = max(a(1),a(3))if(choice.eq.3) b(2) = max(a(1),a(2))if(b(1).ge.b(2)) then

win1 = win1 + 1elsewin2 = win2 + 1

end ifend do

c*** average number of games and winsawin1 = float(win1)/float(itests)awin2 = float(win2)/float(itests)write (*,101) awin1, awin2

Lets make a dealenter numbers of tests

10000win1 = 3.359E-01win2 = 6.641E-01

Page 16: Random Processes Random or Stochastic processes

16

91

ExampleThe 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?

92

write (*,*)'enter numbers of tests, money and goal'

read (*,*) itests, money1, money2

c*** loop over trialstotal = 0wins = 0do it=1,itestsx=money1games=0do while(x.gt.0.and.x.lt.money2)

games = games + 1luck = 1if(rand().le.0.5) luck=-1x = x+luck

end dototal = total+gamesif(x.gt.0) wins = wins+1

end doc*** average number of games and wins

agames = float(total)/float(itests)awins = float(wins)/float(itests)aloose = 1.0-awinswrite (*,100) itests, money1, money2write (*,101) awins, aloose, agames

93

The gambler`s ruin problem.Chances to reach certain goalenter numbers of tests, money and goal

1000010100

tests: 10000initial: 10goal: 100win = 1.026E-01loose = 8.974E-01games = 9.019E+02

chance to win in each bet 50/5094

The gambler`s ruin problem.Chances to reach certain goalenter numbers of tests, money and goal

10000010100

tests: 100000initial: 10goal: 100win = 9.44000E-03loose = 9.90560E-01games = 4.51806E+02

chance to win in each bet 49/51

95

ExampleAn 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.

96

What is the distribution of cooking times of the hamburgers that he removes?

What is a chance for a customer to get a well cooked hamburger if it takes 5 minutes to cook a hamburger.

Does the answers to the first two questions change if he cooks 40 hamburgers at any one time?

Comment: For simplicity, assume that he replaces a hamburger at a regular interval of 30 seconds and there is an indefinite supply of uncooked hamburgers.

Page 17: Random Processes Random or Stochastic processes

17

97

nburger = 20tsteps = 100000

bmin = 10bmax = 20

c initialization (burgers)do i = 1, nburgerb(i) = 0

end doc initialization (time distribution)

do i = 1, tstepstcook(i) = 0

end doc other variables

cook1 = 0cook2 = 0cook3 = 0tmax = 0

c initial seed number calculated from current timecall gettim(ihour,imin,isec,imsec)init = imsec*isec*imin+ihourcall srand(init) 98

do i = 1, tstepsx = 1.0 + rand()*real(nburger)burger = int(x)do j = 1, nburger

if(j.eq.burger) thentcook(b(j)+1) = tcook(b(j)+1) + 1if(b(j)+1.gt.tmax) tmax = b(j)+1if(b(j).lt.bmin) cook1 = cook1 + 1if(b(j).ge.bmin.and.b(j).le.bmax)

cook2 = cook2 + 1if(b(j).gt.bmax) cook3 = cook3 + 1b(j) = 0

elseb(j) = b(j) + 1

end ifend do

end dowrite(*,102) tmaxc 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)write(*,101) rcook1, rcook2, rcook3

99

for 100,000 burgers

20 burgers on the grillmax cooking time = 237undercooked = 0.39941001well cooked = 0.25903001over cooked = 0.34156001

40 burgers on the grillmax cooking time = 463undercooked = 0.22596000well cooked = 0.18769000over cooked = 0.58635002

1000 10 20 30 40 50 60 70 80 90 100

0

10

20

30

40

50

60

grill for 20 burgersburgers cooked = 1,000

burg

ers

cooking time (min)

101

0 10 20 30 40 50 60 70 80 90 1000

1000

2000

3000

4000

5000

6000

grill for 20 burgersburgers cooked = 100,000

burg

ers

cooking time (min) 102

Applications of Monte-Carlo simulations

integrationstatistical physicsaerodynamic quantum chromodynamicsmolecular dynamic simulationexperimental particle physicscellular automatapercolationradiation field and energy transport…Finance and business…

Page 18: Random Processes Random or Stochastic processes

18

103

Cellular automationCellular automata – dynamic computational models that are discrete in space, state and time.

Applications – physics, biology, economics, …

Random walk is an example of cellular automata.

see also “The Game of Life” is a cellular automaton devised by John Horton Conway in 1970. Life is an example of emergence and self-organization - complex patterns can emerge from the implementation of very simple rules.

104

What is a chance to encounter a bear?

What data do you need for your simulation?