Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- from math import cos, pi
- from random import random
- import sys
- import multiprocessing
- workers = 4
- needleCount = 30000000
- def generateNeedles(n):
- cross = 0
- pi_05 = pi/2.0
- for i in xrange(n):
- x = random()
- cos_theta_025 = cos(random() * pi_05) * 0.25
- cross += x + cos_theta_025 >= 1 or x <= cos_theta_025
- return cross
- def splitLoad(n, k):
- load, rest = divmod(n, k)
- loads = [load] * k
- loads[0] += rest
- cross = multiprocessing.Pool(k).map(generateNeedles, loads)
- return sum(cross)
- if __name__ == '__main__':
- cross = splitLoad(needleCount, workers)
- print cross, needleCount, needleCount / float(cross)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement