35 lines
921 B
Python
35 lines
921 B
Python
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
|
|
# first passage time of random walker
|
|
# the average of the first passage time grows
|
|
# the more experiments you average (n)
|
|
# eventually diverges to infinity
|
|
# see https://www.math.ucdavis.edu/~tracy/courses/math135A/UsefullCourseMaterial/firstPassage.pdf last paragraph
|
|
|
|
p = 0.5
|
|
thresh = 1.0
|
|
rep = 1
|
|
rn = 10000
|
|
n = 2
|
|
meantimes = np.zeros(rep)
|
|
for i in range(rep):
|
|
times = np.zeros(n)
|
|
for k in range(n):
|
|
xx = 0.0
|
|
xxinx = 0
|
|
while True:
|
|
r = np.random.rand(rn)
|
|
x = np.zeros(len(r))
|
|
x[r < p] = 1.0
|
|
x[r >= p]= -1.0
|
|
y = xx + np.cumsum(x)
|
|
inx = np.where(y > thresh)[0]
|
|
if len(inx) > 0:
|
|
times[k] = xxinx + inx[0]
|
|
break
|
|
xx = y[-1]
|
|
xxinx += len(x)
|
|
meantimes[i] = np.mean(times)
|
|
print np.mean(meantimes)
|