import numpy as np from numpy import * import matplotlib matplotlib.use('TkAgg') from matplotlib import pyplot as plt from matplotlib import animation lfsr = 100 def lfsr11(): # 11 bit lfsr global lfsr order = 11 taps = [0,10] #subtract 1 bit = (((lfsr >> (taps[0])) ^ (lfsr >> (taps[1]))) & 1) lfsr = (lfsr>>1) | (bit << order-1) # print(bin(x)) # print(x) number = int(lfsr) return lfsr def lfsr_vector(): # x1, x2 x1 = lfsr11()*1.0/(pow(2,11)-1) x2 = lfsr11()*1.0/(pow(2,11)-1) return x1, x2 def transform(x1,x2): # y1, y2 y1 = sqrt(-2.*log(x1))*sin(x2) y2 = sqrt(-2.*log(x1))*cos(x2) return y1, y2 yy1 = [] yy2 = [] xx1 = [] xx2 = [] for i in range(pow(2,11)-1): x1,x2 = lfsr_vector() y1,y2 = transform(x1,x2) xx1.append(x1) xx2.append(x2) yy1.append(y1) yy2.append(y2) fig = plt.figure() plt.hist(yy1+yy2,100) plt.hist(xx1+xx2,100) plt.show()