Buffon’s Needle
桌面上有距离为a的若干平行线,将长度为L的针随机丢在桌面上,则这根针与平行线相交的概率是多少?假定L < a.
思路:从针据横线的距离与夹角得出。
解决:
1. 假设针的中点到最近横线的距离为y,则y∈[0,a2]y∈[0,a2];
- 因为投针是随机的,所以y服从均匀分布:
f(y)={2a,0,0≤y≤a2othersf(y)={2a,0≤y≤a20,others
2. 假定横线向右为正向,记投针与横线正向的角为θθ,则θ∈[0,π]θ∈[0,π],为均匀分布。
f(θ)={1π,0,0≤θ≤πothersf(θ)={1π,0≤θ≤π0,others
投针与横线有交点,即y≤L2sinθy≤L2sinθ
布丰投针估算ππ – 蒙特卡罗模拟
针与横线有交点的概率:
P(x)=∫π0∫L2sinθ0f(y,θ)dydθ=∫π0∫L2sinθ0f(y)f(θ)dydθ =∫π0∫L2sinθ02a∗1πdydθ=2LaπP(x)=∫0π∫0L2sinθf(y,θ)dydθ=∫0π∫0L2sinθf(y)f(θ)dydθ =∫0π∫0L2sinθ2a∗1πdydθ=2Laπ
如果做n次投针实验,其中有k次针与横线相交,则针与横线相交的频率为:knkn,根据大数定理,频率也就为概率。
2Laπ≈kn2Laπ≈kn 即, π≈2Lnakπ≈2Lnak
MATLAB模拟实验
用布丰投针实验近似计算pipi的值:
代码如下:
l = 0.6; %针的长度
a = 1; %平行线的宽度
n = 1000000; %做n次投针试验
k = 0; %记录针与平行线相交的次数
y = unifrnd(0, a/2, 1, n); %在[0, a/2]内服从均匀分布随机产生n个数
theta = unifrnd(0, pi, 1, n); %在[0, pi]内服从均匀分布随机产生n个数
for i=1:n
if y(i) < (l/2)*sin(theta(i))
k = k + 1;
end
end
f = k / n;
Pi = (2*l*n)/(a*k);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
结果如图所示:
如此进行多次实验,进行估计。
如图为进行100次重复投针实验,每次投针1000000次,结果如图所示: