用户:
橘生淮北则为枳查看:6 回复:2 评论:6 创建时间:2022-12-28T10:09:01
(对于这个算法,我的认识不算深入,这个项目也只用到了初等的蒙特卡洛。若有误,望指正)
(下文中,pi即为圆周率,r^n即为r的n次方)
设现在我们有一圆,圆外接有一正方形,如下图所示

根据我们扎实的小学数学功底,设圆形的半径为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))