ビュフォンが1777年に提起し解決した問題:
互いの距離がd(Lより大きい)で平行な直線となれる水平板に長さLの針をランダムに投げる。
針がこれらの線分に交差する確率は?
************** pi_mc_004.dwg ***************
ビュフォンの解答:
Nt と Nc をそれぞれ投げた回数と交差した針の数とする。
確率P は Nt に対する Nc の比 (Nc/Nt) = (2 L) / (p d) で定義される。
但し p = (2L)/(dP) とする。
L = d ならば、 p = 2/P = 2 Nt / Nc である。Nt = 10 の場合を下記に示す。
この例では Nt = 10 と Nc=7 でpの近似値は 20/7=2.857 で与えられる。
************** pi_mc_004.dwg ***************
コンピュータのモデル:
x = 0 と x=1 で2つの垂線を描く。
針の中点は常に線分 y = 0 で x=0 ~ 1 である。値はランダムに発生させる。
この針がx軸(y=0)に関して作る角度もランダムに発生させる。
新しい針が作られるごとに交差をテストし、交差すれば Nc を1加算する。
************************* pi_mc_005.dwg **************************
垂線を交差するスティックで作られる包絡線が円や楕円を作りあげていくのを見るのはおもしろい。
何故こうなるか理由が判りますか?
************************* pi_mc_006.dwg **************************
この図面とアニメーションの作成方法:
プログラム random_1.lsp を (load
"random_1") でロードする。
プログラム random_2.lsp を (load
"random_2") でロードする。
プログラム Monte_Carlo_pi.lsp を
(load "Monte_Carlo_pi") でロードする。
次にコマンド ラインから Buffon と実行命令をタイプする。