蒙特卡洛随机计算圆周率

2023-01-25 10:09 知识科普 0阅读 投稿:小七

今天看到一个比较有意思的方法,用蒙特卡洛方法计算圆周率。

觉得挺有意思,就把它用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)]




声明:若水百科所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系youzivr@vip.qq.com