猫史档案馆


基于蒙特卡洛原理的pi值计算器

用户:橘生淮北则为枳橘生淮北则为枳查看:6 回复:2 评论:6 创建时间:2022-12-28T10:09:01


(对于这个算法,我的认识不算深入,这个项目也只用到了初等的蒙特卡洛。若有误,望指正)

(下文中,pi即为圆周率,r^n即为r的n次方)

设现在我们有一圆,圆外接有一正方形,如下图所示

center_image

根据我们扎实的小学数学功底,设圆形的半径为R,则盒子的边长为2R,盒子面积即为2R×2R=4R^2,圆形的面积为pi×R^2

圆形与正方形的面积比为pi:4。

现在,如果随机的在方圆图中放置点,点的坐标随机,但点位于方圆图中。只要点的数量充分大,那么点在圆的分布与在正方形的分布数量之比就约等于方圆面积之比,这是因为方圆中点的数量取决于方圆的面积。

用代码表示如下:

import random
from math import sqrt

p_s = int(input("请输入点数,点数与精确度、时间成正比"))
ict = 0
print("计算中")
for i in range(p_s):
    x, y  = random.randint(0,1),random.randint(0,1)
    dis = sqrt(x ** 2+y ** 2)
    if dis <= 1.0:
        ict += 1

pi = 4*ict/p_s
print("{:.6f}".format(pi))

 


回复

上一页1 页 / 共 1下一页
我是菜鸟一枚我是菜鸟一枚

我总觉得在哪儿见过这种文章

点赞1


评论


我是菜鸟一枚我是菜鸟一枚

*是×的意思吗?没学过python

点赞0


评论