Buffon實驗介紹
法國數學家Buffon提出一個問題:設咱們有一個以平行且等距木紋鋪成的地板(如圖),隨意拋一支長度比木紋之間距離小的針,求針和其中一條木紋相交的機率。
經Buffon證實此機率與圓周率pi相關,所以Buffon提出的一種計算圓周率的方法——隨機投針法。這就是蒲豐投針問題(又譯「布豐投針問題」)。
javascript
實驗步驟
- 取一張白紙,在上面畫上許多條間距爲a的平行線。
- 取一根長度爲l(l≤a) 的針,隨機地向畫有平行直線的紙上擲n 次,觀察針與直線相交的次數,記爲m。
- 計算針與直線相交的機率。
實驗結果
法國數學家布豐提出的「投針問題」,記載於布豐1777年出版的著做中:「在平面上畫有一組間距爲a的平行線,將一根長度爲l(l≤a)的針任意擲在這個平面上,求此針與平行線中任一條相交的機率。」
布豐本人證實了,這個機率是:
P = 2 L π a P = \frac { 2 L } { \pi a } P=πa2L
(其中π爲圓周率)
因爲它與π有關,因而人們想到利用投針試驗來估計圓周率的值。
java
證實過程
當Buffon趕上python神器
知道能夠經過實驗來求出pi,咱們就能夠用計算機來代替人工手拋啦!
有了numpy生成隨機數字,咱們就能夠解放雙手,輕鬆模擬出上萬次實驗哇卡卡卡卡卡( ̄▽ ̄)
python
代碼
因爲是小白,因此還沒習慣寫註釋,因此可讀性有點差,但願各位看官見諒(。ì _ í。)dom
// # Created with Python AI import numpy as np def 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)
感謝風哥的數模教學視頻,真正的學以至用~彎腰致敬⁄(⁄ ⁄ ⁄ω⁄ ⁄ ⁄)⁄
ps 第一篇博客,但願你們指正~spa