蒙特卡罗法求圆周率
蒙特卡罗法求圆周率
-
蒙特卡罗法也称统计模拟法、统计试验法。是把概率现象作为研究对象的数值模拟方法。是按抽样调查法求取统计值来推定未知特性量的计算方法。蒙特卡罗是摩纳哥的著名赌城,该法为表明其随机抽样的本质而命名。故适用于对离散系统进行计算仿真试验。在计算仿真中,通过构造一个和系统性能相近似的概率模型,并在数字计算机上进行随机试验,可以模拟系统的随机特性。
-
本文使用蒙特卡罗法来求解圆周率π
上图是一个单位圆在笛卡尔坐标系的四分之一部分,在这个1x1的正方形内随机撒点。假设我们撒的点足够多,多到能够覆盖到这个正方形内的每一个点,此时我们用圆内点的数量除以整个点的数量就是面积的比,即四分之π,此时用这个值乘以4就得到了圆周率的近似值
Python代码实现
from random import random
DOTS = 1_0000_0000 # 撒点个数
hits = 0.0
for i in range(1, DOTS + 1):
x, y = random(),random() # random.random() 产生0-1之间的一个随机数
dist = pow(x ** 2 + y ** 2, 0.5) # 根号下x^2 + y^2,求到原点的距离
if dist < 1: # 距离小于1,则说明落在了圆内
hits += 1
pi = 4 * (hits / DOTS)
print("圆周率的值是:{}".format(pi))
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步