読者です 読者をやめる 読者になる 読者になる

Gobble up pudding

プログラミングの記事がメインのブログです。

MENU

小学生でもわかるモンテカルロ法

スポンサードリンク

f:id:fa11enprince:20150731131732j:plain
Pythonでモンテカルロ法を書いてみました。

モンテカルロ法による円周率の計算

1辺の長さが2の正方形の中心*1からランダムに1点を選び
その正方形の中心(0,0)からの距離が
1以下であるかどうかを判断する。
以下で-1乗は平方根(√)と同じ意味である。
仮に(a,b) = (0,0)[原点]から(x,y)までの距離は
三平方の定理により
distance^2 = ( x^2 + y^2 )
だから
distance = \sqrt{( x^2 + y^2 )}
またここでdistanceは1とすると
1 = \sqrt{( x^2 + y^2 )}

ランダムに発生させた点すべてをwhole個とし、
方形の中心(0,0)から(x,y)までの距離が1の点をk個とすると、
円の面積 = 正方形の面積 \times ( k \div whole )
となるから、
いま、正方形の面積は2 \times 2で4となり、円の半径は1で、
円の面積 = 半径 \times 半径 \times piだから
円周率と面積は等しいので、
円周率 = 4 \times k \div whole
という式で導ける。

*1:ここで正方形の中心座標を(0,0)と考える