Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import random
- import numpy
- def between(tested,lo,hi):
- return (tested>=lo) and (tested <= hi)
- def makeProjects():
- return numpy.random.normal(755,319,9)
- def allocate(projects,categories):
- ratios = [0]*len(categories)
- allocation = [result.tolist().index(1) for result in numpy.random.multinomial(1,categories,size=9)]
- for cat in range(len(categories)):
- inCat = [projects[index] for index in filter(lambda index: allocation[index] == cat, range(len(projects)))]
- ratios[cat] = sum(inCat)/sum(projects)
- return ratios
- def matchesCategories(projects,error):
- categories = [.02, .03, .20, .29, .46]
- ratios = allocate(projects,categories)
- ratios.sort()
- matches = [between(comp[0],comp[1]-error,comp[1]+error) for comp in zip(ratios,categories)]
- return all(matches)
- def simulateProjects(nb,error):
- print 100.0*len(filter(lambda x: matchesCategories(makeProjects(),error),range(nb)))/nb
- nb=1000
- err=0.01
- if len(sys.argv) > 1:
- nb = int(sys.argv[1])
- if len(sys.argv) > 2:
- err = float(sys.argv[2])
- simulateProjects(nb,err)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement