From 0be859ff528cc5b1d03460f1e46615e6aac32444 Mon Sep 17 00:00:00 2001 From: Jan Benda Date: Tue, 10 Jan 2017 10:33:09 +0100 Subject: [PATCH] added script for first passage time of random walker --- .../exercises/randomwalkfirstpassagetime.py | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 statistics/exercises/randomwalkfirstpassagetime.py diff --git a/statistics/exercises/randomwalkfirstpassagetime.py b/statistics/exercises/randomwalkfirstpassagetime.py new file mode 100644 index 0000000..6af6c76 --- /dev/null +++ b/statistics/exercises/randomwalkfirstpassagetime.py @@ -0,0 +1,34 @@ +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)