蒙特卡洛积分
蒙特卡洛积分用随机取样近似积分。若 独立且均匀分布在 ,则 当 具有有限方差时,,标准误为 。它的典型误差尺度是 ,与样本平均的误差同源。
用圆的面积估计圆周率
在单位正方形随机取均匀点 。指示量 的均值是四分之一圆的面积 ,所以 估计 。若 1000 个点中 786 个落在圆内,估计值为 ;这是示例观测,不是精确证明圆周率等于 3.144。伯努利方差给估计量标准误 ,实际可用 代入作估计。
可运行的 Python 例子
Python 3
import random
def estimate_pi(samples: int, seed: int = 0) -> float:
"""Return 4 times the fraction inside the quarter unit disk."""
if samples <= 0:
raise ValueError("samples must be positive")
rng = random.Random(seed)
inside = 0
for _ in range(samples):
x, y = rng.random(), rng.random()
inside += x * x + y * y <= 1.0
return 4.0 * inside / samples
print(estimate_pi(100_000))
输入是正整数样本量与随机种子,返回浮点估计,不改写外部数据;耗时 ,除随机数生成器状态外额外空间 。固定种子便于复算,不会让估计值变成精确值。
高维与限制
若在体积为 的区域均匀抽样,积分估计量为 倍的函数值平均。蒙特卡洛方法在高维时不直接受网格点数指数增长所限,但若函数方差巨大或事件极罕见,朴素采样仍可能很慢;可用重要性采样等方法改善。随机机制、独立性与方差条件必须在报告误差时写清。