圆周率的计算有两种方法,分别是数学公式法、工程上的蒙特卡罗法。
1.公式法
代码:
运行效果:
注释:因为公式中k的上限是正无穷大,这里为了简便运算,取k=10000。
若增大k值,会发现pi的值更加精准,代价是程序运行时长更长。当我把N设为10000000后,电脑风扇开始呼呼呼了好久。
2.蒙特卡罗方法
核心思想:圆周率(Π)的值间接等于落入圆内的点的数量与正方形内总点数的比值。
为了便于计算,我们先计算1/4圆的pi值,再乘以4,得到整个圆的pi值。
代码如下:
注释:
①dots是1/4正方形内总共撒的随机点数量。
②hits用于记录落在1/4圆形内的点的数量。
③random()函数用于生成0~1之间的随机数,这里是一个单位圆,正好~如果不设置种子,会自动根据操作系统当前的时间(精确到毫秒)作为种子。因此,随机生成的1000*1000个点一定是各不相同的,不会发生点重叠的情况。
④pow(x**2+y**2,0.5)用于计算随机点(x,y)到圆心O(0,0)的欧式距离。即
⑤当距离≤1时,则说明该随机点位于1/4圆内,则将hits变量加1。
运行结果如下:
可以看出,pi的值并不够准确,这一问题可以通过增大dots数量解决。
参考资料:北京理工大学-嵩天-《Python语言程序设计》
本文介绍了使用Python计算圆周率的两种方法,包括数学公式法和蒙特卡罗方法。公式法通过限制迭代次数求得近似值,增加次数可提高精度但会延长运行时间。蒙特卡罗方法利用随机点落在圆内的概率来估算π,通过增加点的数量提高准确性。
4579

被折叠的 条评论
为什么被折叠?



