蒙特卡洛法计算圆周率π(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