import numpy as np
N = 10**7
w = 4.0
l = 2.0
center = np.random.uniform(0, w, size=N)
angle = np.radians(np.random.uniform(0, 360, size=N))
x1 = center+(l/2)*np.cos(angle)
x2 = center-(l/2)*np.cos(angle)
cross = ~((0 < x1)&(x1 < w)&(0 < x2)&(x2 < w))
pi = N / cross.sum()
print("近似値", pi)
print("誤差{:f}%".format(100*abs(np.pi-pi)/np.pi))
aW1wb3J0IG51bXB5IGFzIG5wCgpOID0gMTAqKjcKdyA9IDQuMApsID0gMi4wCmNlbnRlciA9IG5wLnJhbmRvbS51bmlmb3JtKDAsIHcsIHNpemU9TikKYW5nbGUgPSBucC5yYWRpYW5zKG5wLnJhbmRvbS51bmlmb3JtKDAsIDM2MCwgc2l6ZT1OKSkKCngxID0gY2VudGVyKyhsLzIpKm5wLmNvcyhhbmdsZSkKeDIgPSBjZW50ZXItKGwvMikqbnAuY29zKGFuZ2xlKQpjcm9zcyA9IH4oKDAgPCB4MSkmKHgxIDwgdykmKDAgPCB4MikmKHgyIDwgdykpCgpwaSA9IE4gLyBjcm9zcy5zdW0oKQpwcmludCgi6L+R5Ly85YCkIiwgcGkpCnByaW50KCLoqqTlt657OmZ9JSIuZm9ybWF0KDEwMCphYnMobnAucGktcGkpL25wLnBpKSk=