IT

円周率\(π\)=3.14は中学生の知識で求められる!【モンテカルロ法とは】

モンテカルロ法のアイキャッチ画像

この記事では円周率\(π\)を、中学生が習う確率を使って求めるモンテカルロ法について解説をしていきます!

ぴよこ

使う数式はいたってシンプルだよ~

モンテカルロ法って何?

モンテカルロ法とは、普通に解くのが難しい計算式に対して、試しに色々な数を大量に当てはめて計算式の近似解を求める方法です。

ぴよこ

テストで困ったときによく使う方法だね。

この「試しに色々な数」は、「乱数」と呼ばれています。

とさお

乱数はゲームのプログラムでも使用されているよ!

コンピューターが発達したことにより、この乱数を大量に使って計算式の近似的な解を求めることができます。

ちなみにモンテカルロ法は、円周率\(π\)を求める以外の用途でも使われています。

今回は円周率\(π\)を求めるアルゴリズムとして、モンテカルロ法を用います!

モンテカルロ法で円周率\(π\)を求める手順

モンテカルロ法で円周率\(π\)を求めるためには、下の図を使います。

正方形と内接円

1辺の長さが2の正方形(緑)に、半径1の円(オレンジ)がスッポリ収まっている状態です。
この正方形の範囲の中で、正方形に向かって完全ランダムに矢を発射します。

矢を発射すると、矢はオレンジか緑の領域どちらかに刺さることになります。

ここで、矢がオレンジ円の中に刺さる確率Pを考えてみます。
確率Pは、理論上シンプルに考えると、

$$P = \frac{円の面積(π×1^2)}{正方形の面積(2×2)} = \frac{π}{4}$$

となりますね。

ぴよこ

円の面積が大きい方が刺さりやすいってことだね!

とさお

ちなみに今は\(π\)の値が未知数なので、円の面積も未知数だよ~

今回は\(π\)の値が知りたいので、下の式のように

$$π = 4 × P$$

\(π=\) の形にすれば、確率Pから円周率\(π\)が求められます。

この確率Pを、モンテカルロ法では実験的に求めていきます。

例えば、矢を20本発射して15本が円の中に刺さった場合、結果的に確率Pは

$$P = \frac{円の中に刺さった数(15)}{発射した矢の数(20)} = 0.75$$

となります。
このことから、円周率\(π\)は、

$$π = 4 × 0.75 = 3$$

と求められます。\(π=3\)ということは、さっき出てきた確率Pの理論式

$$P = \frac{円の面積}{正方形の面積} = \frac{π×1^2}{2×2}$$

から、今の例では円の面積が3であることを実験的に示していることになります。

以上が、確率Pの実験的な求め方と円周率\(π\)算出の例です。

モンテカルロ法では、矢をランダムに大量発射することで、より正確な確率Pを求めていきます。

ぴよこ

言ってしまえば、「数撃てば限りなく正解に近づくだろ!」っていう考え方なんだな~

とさお

コイントスを無限にやると、表が出る確率=裏が出る確率になるのと一緒だね!

ここからは、実際にシミュレーションでモンテカルロ法を再現していきます。

モンテカルロ法をシミュレーションで再現

正方形の的に向かってランダムに矢を発射するプログラムを組んだので、
早速シミュレーションしてみます。

シミュレーションで得られた確率Pを4倍して、円周率\(π\)の値を求めます。

とさお

矢の数が多いほど、より正確に確率Pが求められるから、
矢の数は変えられるようにしているよ!

矢が刺さった場所は小さな丸い点で示します。
(オレンジ:円の中に刺さった矢、緑:円の外に刺さった矢)

試しに矢を100本、的めがけて発射してみると下の図のような分布になりました。

モンテカルロ法による円周率計算(矢100本)
とさお

\(π\)の値は\(3.2\)になったよ、近いけど本当は\(π=3.14\)だよね。

ぴよこ

う~ん、さすがに矢の本数がちょっと少ないのかなあ。

そこで、今度は矢の本数を1万本にしてシミュレーションしてみると、

モンテカルロ法による円周率計算(矢1万本)
ぴよこ

おお!一番最初に見た図形が浮かび上がってきた!

とさお

\(π\)の値は\(3.152\)になったよ、さっきより近くなったね!

さらに、矢の本数を100万本に増やしてシミュレーションしてみると、

モンテカルロ法による円周率計算(矢100万本)
ぴよこ

見た感じ、最低限必要な数はこれでこなせたみたいね!

とさお

\(π\)の値は\(3.141368\)になったよ!\(3.14\)になったね!

このようにして、試行回数を大量に増やすことで円周率πの近似解を求める方法がモンテカルロ法です。

試行回数をさらに増やせば、より精度の高い近似解が得られます。

円周率\(π\)を確率で求めるモンテカルロ法のまとめ

ここまで、モンテカルロ法について解説してきました。
最後に今回のまとめです!

  • モンテカルロ法とは、乱数を用いて計算式を大量に処理し、近似解を求める方法。
  • 正方形に内接した円の中に、乱数がヒットする確率から円周率\(π\)を求めることができる。
  • 乱数を多く使うほど、精度の高い近似解が得られる。
ぴよこ

乱数・確率を知っておくと、プログラミングでも役に立つよ~

とさお

日常生活でも意外と役に立つよね!