# モンテカルロ法による円周率の近似 ###### tags: `解説` ## モンテカルロ法 まず、プログラミングするために、モンテカルロ法についてちょっと補足するね。必要なかったら読み飛ばして! まず、下のような正方形があったとする。 ![](https://i.imgur.com/0HDuQmI.png =300x) この**正方形の内部に**1つ点を打ってみる。 ![](https://i.imgur.com/9UXS4po.png =300x) すると、**赤い点が正方形の中にある確率**は1(=100%)となる。この確率は、正方形の内部に点を打ち続ける限り、どれだけ点を増やしても変わらない。(あたり前だけど) さてここで、この正方形の内部に$\dfrac{1}{4}$の円を描いてみます! ![](https://i.imgur.com/HEueOtI.png =300x) この**正方形の内部に**再び点を打ってみるね。今度はいくつか打ってみる。 ![](https://i.imgur.com/4H2fZav.png =300x) * 赤い点は$\dfrac{1}{4}$の円の内部にある点 * 黄色い点は、それ以外の正方形の内部にある点 を示しています。今度は、正方形の中に打った点が円の内部にある確率を考えてみるね。 考えやすくするために、正方形の1辺の長さを1とします。すると、正方形の面積は当然1です。そして、下の図の部分の面積は、$\dfrac{1}{4} \pi$となるね! ![](https://i.imgur.com/Jybdfwz.png =300x) ということは、下の図の中に適当に点を打って、その点が$\dfrac{1}{4}$円の内部にある(赤い部分)確率は、 ![](https://i.imgur.com/P7k8VHn.png =300x) $$ 確率 = \dfrac{\left(\dfrac{1}{4}\pi\right)}{1} = \dfrac{1}{4}\pi $$ ということになるね!このことを利用して、円周率$\pi$の近似値を求めようとするのがモンテカルロ法です。 ## プログラム 講義資料にはこんな感じで書いてあったね。 :::info 1. 変数`interior`を0.0で初期化する 2. 0以上1未満の実数を二つランダムに生成し,変数`x`と`y`の値として代入する. 3. 点(x, y)と原点(0, 0)との距離(xの2乗とyの2乗の和の平方根)が1未満だったときは変数`interior`の値を1増やす 4. 2-3 を一定の回数(nとする)を繰り返す. 5. `interior`をnで割り,それに4をかけた値を返す ::: これを詳しく見てみるね。 ### 1 `interior`っていうのは、「適当に打った点が$\dfrac{1}{4}$円の内部にあった回数」を記録する変数です! ### 2 `x`と`y`をランダムに生成することで、適当に打つ点の場所を決めます! ### 3 ここでは、生成した点が、$\dfrac{1}{4}$円の内部にあるかどうかを判定します。ここで三平方の定理を使って、原点からの距離を求めます。 ![](https://i.imgur.com/N5hUnbi.png =400x) :::success 判定条件:原点と点の距離が1より小さい($\sqrt{x^2+y^2} < 1$)とき、点は$\dfrac{1}{4}$円の内部にある! ::: このとき、`iunterior`を1増やします! ### 4、5 この操作を複数回($n$回)行って、どれくらいの確率で$\dfrac{1}{4}$円の中に収まっているのかを調べる!これは、 $$ \dfrac{interior}{n} $$ で求められるね。 繰り返せば繰り返すほど、$\dfrac{1}{4}\pi$に近づくはずだから、 $$ \dfrac{interior}{n} \simeq \dfrac{1}{4}\pi $$ $$ \pi \simeq \dfrac{interior}{n} \times 4 $$ で円周率$\pi$の近似値が求められる! :::warning $\simeq$は近似的に等しいって意味!=は違うな!ごめん! :::