---
# System prepended metadata

title: モンテカルロ法による円周率の近似
tags: [解説]

---

# モンテカルロ法による円周率の近似

###### 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$は近似的に等しいって意味！=は違うな！ごめん！
:::
