import math import time class myLFSR: """a custom 33 N LSFR""" def __init__(self,seed): self.sr = [1]+[0]*32 self.tabs = (1,2,22,32) #print self.sr def random_bit(self): newbit = sum(self.sr[tab-1] for tab in self.tabs)%2 self.sr = [newbit] + self.sr[:-1] #print self.sr return newbit def random_float(self): """return a 32bit float between 0 and 1""" bitStr = '' for i in range(32): bitStr = bitStr + str(self.random_bit()) return float(int(bitStr, 2)) / 4294967295.0 def main(): myrand = myLFSR(time.time()) myrand.random_bit() myrand.random_float() myrand.random_float() myrand.random_float() if __name__== "__main__": main()