使用蒙特卡洛方法计算圆周率

使用蒙特卡洛方法估算圆周率

在这篇博客文章中,我们将探讨如何使用蒙特卡洛方法来估算圆周率 \(\pi\) 的值,并提供一个简单的Python代码示例以及详细的代码解析。

蒙特卡洛方法简介

蒙特卡洛方法是一种通过随机抽样进行数值计算的方法。它广泛应用于物理、工程、金融等领域。本文将演示如何利用这种方法估算圆周率 \(\pi\)

Python代码实现与解析

完整代码及解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 导入random模块,用于生成伪随机数
import random

# 定义函数estimate_pi,接受参数num_samples表示要生成的随机点的数量
def estimate_pi(num_samples):
# 初始化计数器变量num_points_in_circle为0,用于记录落在单位圆内的点的数量
num_points_in_circle = 0

# 使用for循环迭代num_samples次,下划线_表示我们不关心循环变量的具体值
for _ in range(num_samples):
# 在每次循环中,使用random.uniform(-1, 1)生成两个介于-1到1之间的随机浮点数,分别赋给变量x和y
x, y = random.uniform(-1, 1), random.uniform(-1, 1)
# 如果该点位于半径为1的单位圆内(即检查x^2 + y^2 <= 1),则增加num_points_in_circle计数器的值
if x**2 + y**2 <= 1:
num_points_in_circle += 1

# 根据公式4 * num_points_in_circle / num_samples来估算π的值
pi_estimate = 4 * num_points_in_circle / num_samples
# 返回计算出的π的估计值
return pi_estimate

# 设置模拟次数为100,000
num_samples = 100000
# 调用estimate_pi函数获取π的估计值
pi_estimate = estimate_pi(num_samples)

# 输出结果,显示使用了多少个样本以及基于这些样本估计得到的π的值
print(f"Estimated value of Pi using {num_samples} samples: {pi_estimate}")