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

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

在这篇博客文章中,我们将探讨如何使用蒙特卡洛方法来估算圆周率 $\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}")