蒙特卡洛模拟是一种通过重复随机抽样来获得数值结果的技术。它广泛应用于金融、物理、
工程和统计学等多个领域。这里,我将给出一个简单的 Python 实例,演示如何使用蒙特卡
洛模拟来估计圆周率(π)的值。
圆周率(π)的一个经典估计方法是使用蒙特卡洛方法,即随机在边长为 2 的正方形内撒点,
然后统计落在单位圆(半径为 1)内的点的数量。根据这些点,我们可以估算出圆的面积与
正方形面积的比例,从而得到π的近似值。
Python 示例代码
python
import random
def monte_carlo_pi(num_samples):
inside_circle = 0
for _ in range(num_samples):
x = random.uniform(-1, 1)
y = random.uniform(-1, 1)
# 检查点是否在圆内(包括边界)
if x**2 + y**2 <= 1:
inside_circle += 1
# πr^2 / (2r)^2 = π/4
# 因此,4 * (圆内点数 / 总点数) 约为 π
pi_estimate = 4 * inside_circle / num_samples
return pi_estimate
# 示例:使用 10000 个样本来估计π的值
num_samples = 10000
estimated_pi = monte_carlo_pi(num_samples)
print(f"Estimated π using {num_samples} samples: {estimated_pi}")
代码解释
函数定义:monte_carlo_pi(num_samples) 定义了一个蒙特卡洛模拟函数,接受一个参数
num_samples,表示要随机生成的点的总数。
随机点生成:使用 random.uniform(-1, 1) 生成在区间 [-1, 1] 内的随机浮点数,这些点均匀
分布在边长为 2 的正方形内。
点位置判断:检查每个点是否落在单位圆内(即 (x^2 + y^2) <= 1)。
π的估计:根据落在圆内的点数与总点数的比例,使用公式 4 * (圆内点数 / 总点数) 来估
算π的值。这个公式基于单位圆面积与正方形面积的比例(π/4)。
结果输出:打印出使用指定样本数估计得到的π值。
注意事项
增加 num_samples 的值可以提高π的估计精度,但同时也会增加计算时间。
由于蒙特卡洛模拟依赖于随机抽样,每次运行程序时得到的π估计值可能会有所不同。