fork download
  1. import numpy as np
  2.  
  3. N = 10**7
  4. w = 4.0
  5. l = 2.0
  6. center = np.random.uniform(0, w, size=N)
  7. angle = np.radians(np.random.uniform(0, 360, size=N))
  8.  
  9. x1 = center+(l/2)*np.cos(angle)
  10. x2 = center-(l/2)*np.cos(angle)
  11. cross = ~((0 < x1)&(x1 < w)&(0 < x2)&(x2 < w))
  12.  
  13. pi = N / cross.sum()
  14. print("近似値", pi)
  15. print("誤差{:f}%".format(100*abs(np.pi-pi)/np.pi))
Success #stdin #stdout 1.18s 102080KB
stdin
Standard input is empty
stdout
近似値 3.14219665312
誤差0.019226%