import numpy as np
import time
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
sns.set()
sns.set_style("whitegrid")
plt.rcParams['figure.figsize'] = 12, 6
# Linear Congruential random number generator
prev = 0
# From: https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use
a = 1103515245
b = 12345
c = 2 ** 31
def random_seed(x):
global prev
prev = (a * int(x) + b) % c
# generate number between 0 - 1
def random_gen():
global prev
x = (a * prev + b) % c
prev = x
return x / c
random_seed(time.time())
def create_trajectory(N):
x = [0]
for i in range(N - 1):
step = 1 if random_gen() > 0.5 else -1
x.append(x[-1] + step)
return x
N = 1000
D = 0.5
for i in range(10):
x = create_trajectory(N)
plt.plot(x)
# error bars
x = range(N)
y = np.zeros(N)
yerr = np.array([3 * np.sqrt(2 * D * t) for t in x])
plt.errorbar(x, y, yerr / 2, alpha=0.3)
plt.show()