python计算圆周率代码_Python练习:计算圆周率

圆周率的计算有两种方法,分别是数学公式法、工程上的蒙特卡罗法。

1.公式法

python计算圆周率代码_Python练习:计算圆周率_第1张图片

代码:

python计算圆周率代码_Python练习:计算圆周率_第2张图片

运行效果:

python计算圆周率代码_Python练习:计算圆周率_第3张图片

注释:因为公式中k的上限是正无穷大,这里为了简便运算,取k=10000。

若增大k值,会发现pi的值更加精准,代价是程序运行时长更长。当我把N设为10000000后,电脑风扇开始呼呼呼了好久。

2.蒙特卡罗方法

核心思想:圆周率(Π)的值间接等于落入圆内的点的数量与正方形内总点数的比值。

python计算圆周率代码_Python练习:计算圆周率_第4张图片

为了便于计算,我们先计算1/4圆的pi值,再乘以4,得到整个圆的pi值。

python计算圆周率代码_Python练习:计算圆周率_第5张图片
1/4圆撒点模拟

代码如下:

python计算圆周率代码_Python练习:计算圆周率_第6张图片

注释:

①dots是1/4正方形内总共撒的随机点数量。

②hits用于记录落在1/4圆形内的点的数量。

③random()函数用于生成0~1之间的随机数,这里是一个单位圆,正好~如果不设置种子,会自动根据操作系统当前的时间(精确到毫秒)作为种子。因此,随机生成的1000*1000个点一定是各不相同的,不会发生点重叠的情况。

④pow(x**2+y**2,0.5)用于计算随机点(x,y)到圆心O(0,0)的欧式距离。即

python计算圆周率代码_Python练习:计算圆周率_第7张图片

⑤当距离≤1时,则说明该随机点位于1/4圆内,则将hits变量加1。

运行结果如下:

python计算圆周率代码_Python练习:计算圆周率_第8张图片

可以看出,pi的值并不够准确,这一问题可以通过增大dots数量解决。

参考资料:北京理工大学-嵩天-《Python语言程序设计》

你可能感兴趣的:(python计算圆周率代码)