モンテカルロ法のルーツは有名なビュフォンの針に遡ります.この方法で円周率を求めることは,18世紀後半ビュフォン(G.L.L.vonBuffon)によって考えられました.
●方法
まず,床に間隔2Lの平行線をひきます.そして,長さ2a(a
< L) の針を N 本用意します.
そこで,これらの針をランダムに床に投げ,N本のうちn本が平行線に交差する確率Pを考えると,
P=2a/(π L)
となることがわかります.よって,近似的に
n/N = P = 2a/(π L)
が成り立ち,
π=2a N / ( n L )
と計算できる訳です. 下の図では,間隔1の平行線に0.5の針を投げる実験ができます.( 精度はどうでしょう?)
with Java
それでは,理論的に計算してみましょう.平行線の間隔 2 L , 針の長さ 2 a とします.
針の中心位置mと最も近い線 lt までの距離y, 針と水平方向のなす角 θ を2変数とする関数を考えます.図の対称性から,0<=y<=L , 0<=θ<=π / 2としてもいいでしょう.さらに,ランダムネスによりこれら2変数は一様に分布すると仮定してもかまいません.さて,針が lt と交差する条件は,
となります.この様子をグラフにすると次のようになり,正弦曲線の下の部分が針が平行線と交差する条件を満たす部分です.
この下の部分の面積は定積分で,次のように計算できます.a = 1/4 で計算しましょう.
また,全体の部分の面積は長方形なので次のようになります.
すると,針が平行線に交わる確率 P が計算できます.