用python代码实现蒲丰投针实验
时间: 2023-06-19 10:04:40 浏览: 584
蒲丰投针实验是一种概率实验,用于估计圆周率的值。以下是用 Python 实现蒲丰投针实验的代码:
```python
import random
import math
# 模拟投针实验
def needle_drop(n):
hits = 0
for i in range(n):
x = random.uniform(0, 1) # 随机生成针的中心点横坐标
angle = random.uniform(0, math.pi / 2) # 随机生成针与水平线的夹角
if x <= 0.5 * math.sin(angle): # 判断针是否与线相交
hits += 1
return hits
# 计算圆周率的值
def estimate_pi(n, m):
pi_values = []
for i in range(m):
hits = needle_drop(n)
pi = 2 * n / hits
pi_values.append(pi)
estimated_pi = sum(pi_values) / m
return estimated_pi
# 测试
n = 10000 # 投针次数
m = 1000 # 模拟次数
estimated_pi = estimate_pi(n, m)
print("Estimated pi value:", estimated_pi)
print("Difference with math.pi:", abs(estimated_pi - math.pi))
```
代码中的 `needle_drop` 函数模拟了一次投针实验,它生成一个针的中心点横坐标和与水平线的夹角,并根据蒲丰投针问题的几何原理判断针是否与线相交。函数返回相交的次数。
`estimate_pi` 函数调用 `needle_drop` 函数模拟了 `m` 次投针实验,计算每次实验得到的圆周率的值,并求出平均值作为最终的估计值。
在测试中,我们将投针次数 `n` 设为 10000,模拟次数 `m` 设为 1000,然后输出估计的圆周率的值和与 Python 内置的圆周率常量 `math.pi` 的差异。
阅读全文