本文へ移動
雑学書庫好奇心が集まる場所
日本語

偶然を集めて答えを見つける、モンテカルロ法(Monte Carlo Method)

コインを千回投げたら表が何回出るかを計算するのは難しくありません。しかし、52枚のカードを使う一人遊びが成功する確率のように、場合の数が多すぎる問題は、公式で解こうとすると途方に暮れてしまいます。そんなとき、計算をあきらめる代わりに、実際に何度もやってみて結果を数えるという方法があります。それが「モンテカルロ法(Monte Carlo Method)」です。

モンテカルロ法とは、簡単に言えば「ランダムな試行を数多く繰り返したあと、その結果を集めて平均を出し、答えを見積もる計算法」を意味します。正確な公式を知らなくても、偶然を十分に多く集めれば本当の答えに近づく、という考え方がこの方法の土台です。

本資料では、モンテカルロ法が生まれた背景から、仕組みと代表的な例、そして今日使われている分野と注意点まで、順に見ていきます。

正方形にランダムな点を100個打ち、四分円の中に入った78個を数えて、4かける78割る100で円周率を3.12と推定するモンテカルロ・シミュレーション。標本を増やしても毎回精度の向上が保証されるわけではないことも説明している。
モンテカルロ法による円周率の推定例。乱数を固定したシミュレーション100回のうち、四分円の中に78個。出典:オックスフォード大学統計学演習(https://www.stats.ox.ac.uk/~deligian/pdf/sc5/R_Exercises_2018-19/Exercise_1.3.1.html)、LANL Monte Carlo & Random Sampling。

偶然を集めて答えを見つける計算法

モンテカルロ法はどのように生まれたのか?

日差しの入る窓辺の1940年代風の部屋で、カーディガンを着た男性が木のテーブルにカードを並べて一人遊びをしている様子

1946年、ポーランド出身の数学者スタニスワフ・ウラム(Stanisław Ulam)は、病気からの回復中にカードの一人遊びをしていて、ある疑問を抱きました。この遊びが成功する確率はどのくらいだろうか、という問いです。場合の数を数えて計算しようとして疲れ果てた彼は、「いっそ百回ほど実際にやってみて、成功した回数を数えるほうが現実的ではないか」と考えました。

ウラムはこの考えを、アメリカのロスアラモス研究所で共に働いていたジョン・フォン・ノイマン(John von Neumann)に話しました。二人は当時解けていなかった中性子拡散の問題にこの方法を応用することにしました。研究は秘密だったためコードネームが必要になり、同僚のニコラス・メトロポリス(Nicholas Metropolis)が、ウラムのおじが親戚からお金を借りては賭けに出かけていたモナコのモンテカルロ・カジノから名前を取りました。1948年春には、初期の電子計算機エニアック(ENIAC)で初めて自動計算が行われました。


モンテカルロ法の4段階の仕組み

木のおたまからこぼれ落ちた色とりどりの小さなガラス玉が、明るい木のテーブルの上にランダムに散らばる様子

方法ごとに細部は異なりますが、モンテカルロ法はおおむね同じ流れをたどります。

(1) 取りうる範囲を決める
まず、答えを求めるために入力値が取りうる範囲を決めます。たとえば販売量、原材料価格、天気のように、結果に影響を与える変数とその範囲を決める段階です。

(2) ランダムに値を選ぶ
決めた範囲の中で、確率に従って入力値をランダムに選びます。今日ではコンピューターが作る乱数を使いますが、均等に選ばれないと結果が大きく狂うことがあります。

(3) 1回ずつ計算する
選んだ値を入れて、決められた方法で結果を計算します。この過程を数千回、数百万回と繰り返します。

(4) 結果を集める
すべての結果を集めて、平均や分布を求めます。大数の法則により、試行が増えるほど平均は本当の値に近づきます。平均を一つ得るだけでなく、「損をする確率は何%か」のように、結果がどう散らばっているかも合わせて見られるのが大きな長所です。


やさしい例で理解するモンテカルロ法

明るい机の上の正方形の白い紙に青い線で大きな四分円が描かれ、小さな色の点が数百個、曲線の内外にランダムに散らばっている様子

モンテカルロ法をいちばんわかりやすく示す例は、円周率を求めることです。

[事例1] 点を打って円周率を求める

一辺が1の正方形の中に、半径1の四分円を描きます。二つの面積の比は、円周率を4で割った値です。次に、正方形の上に点を均等かつランダムに打ち、四分円の中に入った点の割合を数えます。この割合に4をかけると円周率に近い値が出て、点を多く打つほど3.14に近づいていきます。点が100個ほどのときは3.0や3.3のようなばらついた値が出やすいものの、数十万個を超えると小数第二位まで合うことが多くなります。複雑な計算なしに、点を数えるだけで円周率を求めたわけです。

[事例2] 針を落とす実験

似た考えは、はるか昔にもありました。18世紀フランスの博物学者ビュフォン(Comte de Buffon)は、平行線が引かれた床に針を落としたとき、針が線にかかる確率を計算しました。この確率には円周率が含まれているため、針を何度も投げて線にかかった回数を数えれば、円周率を見積もることができます。この「ビュフォンの針(Buffon's Needle)」問題は、モンテカルロ法の初期の形とされています。


モンテカルロ法が使われる場所と限界

明るいオフィスで、分析者が一点から右へ扇のように広がる何本もの細い色の線が描かれた大きなモニターを見ている様子

モンテカルロ法は、変数が多く不確実性の大きい問題で特に力を発揮します。変数が数十、数百と増えると、すべての場合を一つずつ調べる計算はすぐに不可能になりますが、ランダムに選ぶ方式なら、変数の数に関係なく同じやり方で使えるからです。

  • 金融(Finance):株価や金利がたどりうる道筋を無数に作り、投資リスクやオプション価格を見積もります。
  • 天気予報(Weather Forecasting):初期条件を少しずつ変えた複数の予測を一度に走らせる、アンサンブル予報の土台になります。
  • コンピューターグラフィックス(Computer Graphics):光が通る道筋をランダムに追跡して、写真のような場面を描きます。
  • 囲碁AI(Game AI):モンテカルロ木探索で数多くの仮想対局を打ち、よい手を選びます。
  • 海難捜索(Search and Rescue):アメリカ沿岸警備隊は、風や海流を反映して行方不明の船がいそうな位置を数千通り作り出し、捜索区域を決めます。

ただし、限界もはっきりしています。誤差は試行回数の平方根に反比例して小さくなるため、誤差を半分にするには試行を4倍に増やす必要があります。1回の計算が重い問題なら、膨大な時間がかかることもあります。また、入力値の範囲や確率を誤って設定すると、どれだけ繰り返しても間違った答えに近づくだけです。


モンテカルロ法は、正解を一度に求められないときでも、偶然を十分に集めれば信頼できる答えに近づけることを示しています。カード遊びから始まった小さな疑問が、核物理学や金融、人工知能まで変えたわけです。

完璧な公式がないからと立ち止まらず、数多くの可能性を自分で試してみること、それこそが不確かな世界でよりよい判断を下すための知恵の第一歩です。