Buffon实验介绍

法国数学家Buffon提出一个问题:设我们有一个以平行且等距木纹铺成的地板(如图),随意抛一支长度比木纹之间距离小的针,求针和其中一条木纹相交的概率。

经Buffon证明此概率与圆周率pi相关,因此Buffon提出的一种计算圆周率的方法——随机投针法。这就是蒲丰投针问题(又译“布丰投针问题”)。

python拟合多条直线 python拟合直线方程_python拟合多条直线

实验步骤

取一张白纸,在上面画上许多条间距为a的平行线。

取一根长度为l(l≤a) 的针,随机地向画有平行直线的纸上掷n 次,观察针与直线相交的次数,记为m。

计算针与直线相交的概率。

实验结果

法国数学家布丰提出的“投针问题”,记载于布丰1777年出版的著作中:“在平面上画有一组间距为a的平行线,将一根长度为l(l≤a)的针任意掷在这个平面上,求此针与平行线中任一条相交的概率。”

布丰本人证明了,这个概率是:

P=2L / πa

(其中π为圆周率)

由于它与π有关,于是人们想到利用投针试验来估计圆周率的值。

证明过程

python拟合多条直线 python拟合直线方程_python多条直线拟合_02

当Buffon遇上python神器

知道可以通过实验来求出pi,我们就可以用计算机来代替人工手抛啦!

有了numpy生成随机数字,我们就可以解放双手,轻松模拟出上万次实验

代码

// # Created with Python AIimport numpy as npdef buffon(a,l,n):  xl = np.pi*np.random.random(n)  yl = 0.5*a*np.random.random(n)  m = 0  for x,y in zip(xl,yl):    if y < 0.5*l*np.sin(x):      m+=1  result = 2*l/a*n/m  print(f'pi的估计值是{result}')  buffon(2,1,100000)