distributions.py
1 import random, sys 2 3 4 def normal_distribution(mean, standev): 5 def f(): 6 return int(random.normalvariate(mean, standev)) 7 8 return f 9 10 11 def exponential_distribution(mean): 12 def f(): 13 total = 0 14 while 1: 15 total += 1 16 if not random.randrange(32): 17 break 18 return int(total * 0.03125 * mean) 19 20 return f 21 22 23 def convolve(*args): 24 def f(): 25 total = 0 26 for arg in args: 27 total += arg() 28 return total 29 30 return f 31 32 33 def transform(dist, xformer): 34 def f(): 35 return xformer(dist()) 36 37 return f