python蒙特卡洛法计算圆周率头歌
时间: 2025-05-18 21:22:15 浏览: 24
### 使用 Python 实现蒙特卡洛模拟估算圆周率 π
蒙特卡洛方法是一种基于随机采样的统计学技术,广泛应用于概率计算、优化问题以及物理模拟等领域。对于估算圆周率 \( \pi \),可以通过几何关系和随机点分布实现这一目标。
#### 原理说明
在一个边长为 1 的正方形内部绘制一个半径为 1 的四分之一圆弧,则该区域面积的关系可以表示为:
\[ S_{\text{circle}}' / S_{\text{square}} = (\pi r^2) / (r^2) = \pi / 4 \]
因此,如果能够通过随机抽样得到落在四分之一圆内的点的比例 \( p \),就可以利用公式 \( \pi = 4p \) 来估计圆周率的值[^1]。
#### Python 实现代码
以下是完整的 Python 实现代码:
```python
import random
def estimate_pi(num_samples):
points_inside_circle = 0 # 记录位于圆内的点数量
for _ in range(num_samples):
x = random.uniform(-1, 1) # 随机生成 [-1, 1] 范围内的 x 坐标
y = random.uniform(-1, 1) # 随机生成 [-1, 1] 范围内的 y 坐标
if x**2 + y**2 <= 1: # 判断点是否在单位圆内
points_inside_circle += 1
pi_estimate = 4 * (points_inside_circle / num_samples) # 根据比例计算 π
return pi_estimate
# 输入样本数量
num_samples_str = input("请输入要投掷的点数:")
num_samples = int(num_samples_str)
# 执行蒙特卡洛模拟并输出结果
estimated_pi = estimate_pi(num_samples)
print(f"根据 {num_samples} 个样本点,估算的圆周率为:{estimated_pi:.5f}")
```
#### 代码解析
1. **导入模块**: `random` 模块提供了生成随机浮点数的功能。
2. **定义函数**: 函数 `estimate_pi` 接收参数 `num_samples` 表示总的随机点数。
3. **循环生成随机点**: 对于每一个点,分别生成其横坐标 \( x \) 和纵坐标 \( y \),范围限定在 \([-1, 1]\)[^2]。
4. **判断条件**: 如果满足 \( x^2 + y^2 \leq 1 \),则认为该点位于单位圆内。
5. **计算比例**: 将位于圆内的点数除以总点数,并乘以 4 得到 \( \pi \) 的估值。
6. **用户交互**: 用户可通过输入指定随机点的数量,程序会返回对应的 \( \pi \) 估值。
#### 示例运行
假设用户输入 `1000000` 作为随机点数,可能的输出如下:
```
请输入要投掷的点数:1000000
根据 1000000 个样本点,估算的圆周率为:3.14197
```
随着样本点数增加,\( \pi \) 的估值将逐渐接近真实值。
---
阅读全文
相关推荐

















