前言:
现时小伙伴们对“迭代求pi”大致比较珍视,各位老铁们都需要知道一些“迭代求pi”的相关文章。那么小编在网摘上网罗了一些关于“迭代求pi””的相关内容,希望各位老铁们能喜欢,你们快快来了解一下吧!今天看到一个比较有意思的方法,用蒙特卡洛方法计算圆周率。
觉得挺有意思,就把它用Python来实现以下,代码如下。
结果发现,计算跟准确值圆周率有一些千分之的几到万分之几的误差,挺有意思的哈。
在10000次迭代的计算下,圆周率是3.1464,计算时间0.7s;
在100000次迭代的计算下,圆周率是3.14552,计算时间1.6s;
在100000次迭代的计算下,圆周率是3.142764,计算时间10.9s;
def monte_carlo(total_points): """ 圆中点的个数除以总点数即为圆周率 Args: total_points: 生成点总个数 Returns: pi,以list形式返回所有的x和y点 """ # 1:定义圆中点个数的计数器与点容器 num_circle_points = 0 x_list = [] y_list = [] # 2:生成total_points个随机点 for _ in range(total_points): # 3:在长宽均为1的矩形内生成随机点(x,y) rand_x = np.random.uniform(0, 1, size=1) rand_y = np.random.uniform(0, 1, size=1) x_list.append(rand_x) y_list.append(rand_y) # 4:判断随机点是否在圆内,如果在则圆中点个数计数器加1 if np.add(rand_x ** 2, rand_y ** 2) <= 1: num_circle_points += 1 # 5:根据圆中点个数与总点数的比值,即得到圆周率 pi = 4 * float(num_circle_points) / float(total_points) return pi, x_list, y_listif __name__ == '__main__': import numpy as np pi, x_list, y_list=monte_carlo(10000) print(pi)
作者的其他回答:
这篇服务器的使用经验帮助了近千人,简明实用,阐述到位。值得你花几分钟看一下。
阿里云域名注册与备案、服务器ECS购买与登录
自己拥有一台服务器可以做哪些很酷的事情
服务器建立个人网站,看看这个,少走弯路不买错,堪称完美避坑指南。
[阿里云服务器快速建网站 (安装BT宝塔面板和wordpress)]
还有好十几篇这么优秀的经验分享,都收在我个人回答里,关注我,你将获得不一样的经验。
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #迭代求pi