蒙特卡洛法計算圓周率π(Python)


 1 import random
 2 i = 0
 3 numin = 0
 4 numall = 0
 5 while 1:
 6     i += 1
 7     numall += 1
 8     x = random.uniform(-5,5)
 9     y = random.uniform(-5,5)
10     if y*y+x*x <= 25:
11         numin += 1
12     if i % 50000 == 0:
13         print(4.0*numin/numall)

 

  蒙特卡洛法計算圓周率計算原理直觀。如圖所示(圖來自網絡),假設有一個正方形,我們做它的內切圓,設內切圓的半徑是r,那么內切圓面積是πr*r,正方形面積是4*r*r,圓的面積/正方形面積=π/4。隨機向正方形平面射點,當點的數量足夠多,我們可以看做落在圓上的點的數量代表圓的面積、所有的點代表正方形面積,因此,落在圓上的點的數量/所有的點數量=π/4。π因此得以算出。

  此方法效率很低,本人在單線程的情況下運行5小時才精確到3.14159。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM