In [17]:
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
In [4]:
# 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())
In [8]:
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
In [28]:
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()