モンテカルロシミュレーション

モンテカルロシミュレーション は、乱数を用いた試行を十分な回数繰り返すことによってシステムの統計的な振る舞いを調べるシミュレーションの手法です。

以下は 2 個の 6 面ダイスを振って、出た目の合計値を調べるプログラムです。 これも一種のモンテカルロシミュレーションと見做すことができます。

See the Pen コンピューティング2 4-4 by Yosuke Onoue (@likr) on CodePen.

モンティ・ホール問題

次のような問題を考えます。 3 つのドアがあり、そのうち 1 つのドアが当たりになっています。 プレイヤーは 3 つのドアから 1 つを選びます。 司会者は、プレイヤーがドアを選んだ後、残った2つのドアのうち外れのドアを1つ開きます。 司会者がドアを選んだ後、プレイヤーはドアを選び直すことができます。 ドアを選び直した場合とそうじゃない場合で当たりを引く確率に違いはあるでしょうか? これは、モンティ・ホール問題 と呼ばれる確率論の有名な問題です。

ドアを選び直さない場合当たりの確率は 1/3 ですが、ドアを選び直すと当たりの確率は 2/3 になります。 これをモンテカルロシミュレーションで確かめてみましょう。

See the Pen コンピューティング2 4-5 by Yosuke Onoue (@likr) on CodePen.

円の面積の計算

モンテカルロシミュレーションの有名な応用として、円周率の近似があります。

原点(0, 0)を中心とした半径 1 の円の方程式は以下のように表されます。

この円の面積は円周率と等しくなります。 ここで、この円の の領域 A を考えます。 A の面積は元の円の面積の 1/4 です。 また A は、(0, 0), (0, 1), (1, 0), (1, 1)を頂点とした一辺の長さが 1 の正方形で囲むことができます。 正方形の中の点をランダムに選んだとき、その点が A に含まれる確率は A の面積に等しくなります。 すなわち、の範囲で乱数 を発生させ、その点が A に含まれた回数を数えることで A の面積を近似できます。 そして、A の面積を 4 倍することで元の円の面積、すなわち円周率を得ることができます。

これに基づいて Processing でプログラムを作成すると以下のようになります。

See the Pen コンピューティング2 4-6 by Yosuke Onoue (@likr) on CodePen.

大体円周率に近い値を得ることができています。

results matching ""

    No results matching ""