蒙特卡罗法求圆周率
-
蒙特卡罗法也称统计模拟法、统计试验法。是把概率现象作为研究对象的数值模拟方法。是按抽样调查法求取统计值来推定未知特性量的计算方法。蒙特卡罗是摩纳哥的著名赌城,该法为表明其随机抽样的本质而命名。故适用于对离散系统进行计算仿真试验。在计算仿真中,通过构造一个和系统性能相近似的概率模型,并在数字计算机上进行随机试验,可以模拟系统的随机特性。
-
本文使用蒙特卡罗法来求解圆周率π
上图是一个单位圆在笛卡尔坐标系的四分之一部分,在这个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))
标签:DOTS,hits,圆周率,random,蒙特卡罗,法求
From: https://www.cnblogs.com/jackwolfey/p/18237642