1.蒲丰投针模型是什么?
该模型由法国数学家蒲丰于1777年提出,是最早用随机试验解决问题的案例。假设在平行线间投针,设平行线间距d,针长度l,且 l < d。通过此实验可算出圆周率Π。
2.进行实验的目的是?
通过统计针和平行线相交的次数和投针次数的比例,可以反推出Π的近似值。
3.蒲丰投针的三种情况:
前提是针长小于平行线间距

可看出,当
时,针和平行线相交。
4.代码思路:
- 设置平行线间距d,针长度l,实验总次数N的值
- 定义实验操作函数,首先初始化计时器的值,用于统计针和平行线相交的次数,在循环中生成x,xita。x表示针中心离最近平行线的垂直距离,xita表示针和平行线相交处的夹角。
- 若满足判断条件:
,说明针和平行线相交,计数器值+1 - 最后,用公式
计算Π,其中P=M/N。(M是计数器的值)
import random import math
d = 2 l = 1 N = 1000000 def experi(d,l,N): M = 0 for i in range(N): x = random.uniform(0,d/2) #生成等间隔的随机数 xita = random.uniform(0,math.pi/2) if x <= l/2 * math.sin(xita): M += 1 return M M1 = experi(d,l,N) pi = 2*l / (d*(M1/N))
结果:3.1408218902722465
import random
import math
d = 2
l = 1
N = 1000000
def experi(d,l,N):
M = 0
for i in range(N):
x = random.uniform(0,d/2)
xita = random.uniform(0,math.pi/2)
if x <= l/2 * math.sin(xita):
M += 1
return M
M1 = experi(d,l,N)
pi = 2*l / (d*(M1/N))
pi
5.总结:
蒲丰投针模型,用一根针和几条平行线,通过大量随机试验,反推出了圆周率π。它的核心是用随机性逼近确定性,这正是蒙特卡洛算法的精髓。在数模竞赛中,蒙特卡洛方法通常作为备用方案,解决复杂系统的期望值计算问题。


