import math import time import LFSR import matplotlib.mlab as mlab import matplotlib.pyplot as plt import numpy as np class Walker: def __init__(self, rs): self.history=[] self.pos = 0 self.random_source = rs def step(self): if self.random_source.shift()==0: step = -1 else: step = 1 self.history.append(self.pos) self.pos += step return self.pos if __name__ == "__main__": num_walkers = 100 num_steps = 1000 my_LFSR = LFSR.LFSR(16, int(1000 * time.time())) walkers =[Walker(my_LFSR) for i in range(num_walkers)] for step in range(num_steps): for walker in walkers: walker.step() three_std_devs = [3*2*math.sqrt(a/2) for a in range(num_steps)] plt.bar(range(num_steps), [-a for a in three_std_devs], linewidth = 0, width = 1, color = "y") plt.bar(range(num_steps), three_std_devs,linewidth = 0, width=1, color = "y") for walker in walkers: plt.plot(walker.history) plt.show()