サイコロを振ると
6面体のサイコロを振ると、それぞれの面が出る確率は6分の1です。
これはなんとなくですが、常識として知っています。
例えば、サイコロを振ったら1が出たとします。次にサイコロを振ると1が出る確率はどのくらいでしょうか?
答えは6分の1です。前に1が出たのだから、次に振るとき1が出る確率が低くなると思う方もいるかもしれませんが、そんなことはありません。
サイコロは前にどの面が出たのか記憶していません。前回出た面と今回出る面はそれぞれ独立した事象であるのです。
6回サイコロを振ったとき、1→2→3→4→5→6と出るのも、1→1→1→1→1→1→1と出るのも、1→6→3→5→4→2と出るのも同じ確率なのです。
そうするとこう思うわけです。
「同じ面が何回もまとめて出るのなら、確率は6分の1じゃないではないか」
ここで不思議な現象があります。10回や20回サイコロを振ったとき、各面が出る確率が均等になるとは限りません(均等になることがあるかもしれませんが)。
これが100回、200回と回数を重ねるといくらか均等になっていきます。
10,000回くらい振ると、かなり均等になっていきます。
このように試行回数を多くすると徐々に一定の確率に近づいていく現象を「大数の法則」といいます。
この大数の法則は例えば、保険の世界で用いられています。医療保険であれば、ある病気に罹患する確率は概ね想定できます。
なので保険に加入してくれる人の数が多ければ多いほど、加入者の中で罹患する人の数は想定した確率に近づいていきます。その確率を元に保険料を求めれば、保険金を払うことが出来て、商売としても成り立つというわけです。
モンテカルロ法
円周率は3.14である、というのを大数の法則を使って体験することが出来ます。
1×1の正方形の中に、ランダムに点を打ちます。左下の点を(0, 0)とした時に、この点からランダムに打った点までの距離が1以下であれば1カウントする、ということを繰り返していきます。
これは何をしているのかというと(0, 0)を中心とした円を4分の1にして、その円の中に点が打たれれば1カウントするということと同じことになります。
100回点を打ったなら、カウント数÷100×4、10,000回打ったなら、カウント数÷10,000×4とすると、円周率を求めることが出来ます。
4をかけるのは円の4分の1の中に点を打っているからです。
イメージとしては2×2の正方形の中に、各辺に接する半径1の円を書き、ランダムに点を打っていったときに円の中にびっしりと点が打たれているはずです。
この円の面積は約3.14、円から外れた部分は約0.86(4 - 3.14)となることから、全試行数のうち円内に点を打った数の割合を求めれば円周率になるという実験なのです。
これ、点を打つ回数を多くすると、3.14に近づいていきます。これもまた大数の法則がなせる業と言えます。
初めてこの円周率を求めるプログラムを書いたとき、かなり感動したのですが、言葉ではイマイチ伝えられないですねえ。