モンテカルロ法とは?乱数で解く仕組みと円周率・リスク評価・強化学習での使い方【2026年版】
モンテカルロ法とは、乱数を大量に発生させて試行を繰り返し、その結果を統計的に集計して答えを近似する数値計算の手法です。方程式を解いて厳密な答えを出すのではなく、サイコロを何万回も振るように偶然のサンプルを積み上げ、平均や比率から真の値へ近づけます。円周率を点の打ち込みで求める例は有名ですが、実務での本領は、金融のリスク計測やプロジェクトの工期見積もり、強化学習といった「厳密に解けない不確実な問題」を確率で扱えることです。この記事では、乱数で近似する基本の仕組みから、数値積分と期待値計算、業務での使い方、そして企業が自社の業務システムへ実装すべき条件と見送るべき場面までを、実装者の判断基準に落として解説します。特定手法であるMCMC(マルコフ連鎖モンテカルロ法)の仕組みとベイズ推定への使い方は、本記事で全体像を掴んだうえで深掘りすると理解が進みます。
目次
まとめ:モンテカルロ法は乱数で近似解を得る確率的手法
モンテカルロ法は「乱数を投げて統計で答えを当てる」手法です。厳密解を式で導けない、あるいは次元が高すぎて解析的に積分できない問題に対し、大量のサンプルを生成して平均や比率で近似します。円周率推定はこの考え方を最短で体感できる教材で、正方形に打った点のうち円内に入った割合から円周率が求まります。
実務で効くのは、変数が絡み合う不確実性の計測です。金融ではポートフォリオの損失可能性を測るVaR、プロジェクト管理では工期やコストのばらつき、機械学習では強化学習の価値推定に用いられます。ただし万能ではありません。誤差は試行回数の平方根に反比例してしか縮まらず、精度を1桁上げるには試行を100倍にする必要があります。低次元で解析解があるなら計算量の無駄になり、リアルタイム性が要る処理には試行回数を稼げず向きません。「解析的に解けず、次元が高く、多少の誤差を許容できる」——この3条件がそろったときに採用するのが失敗しない線引きです。
モンテカルロ法の定義と仕組み|乱数を大量に試して確率で解く基本
名称は、カジノで知られるモナコのモンテカルロ地区に由来します。第二次大戦中、核分裂の中性子の振る舞いを解くために乱数計算として体系化されたのが起点です。中身は拍子抜けするほど素直で、確率的な試行を数多く回し、その集計から答えを推定します。
乱数を大量に発生させて統計的に真の値へ近づける基本の考え方と手順
手順は3段です。第一に、求めたい量を「ある確率的な試行の期待値や比率」へ言い換えます。第二に乱数を使い、その試行を何万回も実行。第三に、結果を平均するか条件を満たした割合を数えます。試行が独立でありさえすれば、大数の法則により、回数を増やすほど推定値は真の値へ収束します。ここで使う乱数は、実際にはコンピュータが計算式で生成する疑似乱数です。同じ種(シード)を与えれば同じ系列を再現できるため、結果の再現性や検証にも役立ちます。式を立てて解く代わりに、試して数える。この発想の転換がモンテカルロ法の核心です。
円周率の推定でわかる打った点の比率から答えを導く直感的な具体例
1辺2の正方形の中に、半径1の円がぴったり収まっている図を思い浮かべてください。正方形の面積は4、円の面積はπです。ここに乱数でランダムな点を大量に打つと、円の内側に落ちる点の割合は面積比のπ/4に近づきます。
- 正方形内に一様乱数で点(x, y)を1つ打つ
- 原点からの距離が1以下なら「円内」として数える
- 「円内の点数 ÷ 全点数 × 4」を計算する
- 点を増やすほど、この値が円周率に近づく
1万点でおよそ小数第2位、100万点でおよそ小数第3位まで合ってきます。ここで体感できるのは、精度が試行回数に比例しては上がらないという事実です。桁を1つ稼ぐのに点数は桁違いに要る——この重さが、後述の分散削減や採用判断に直結します。
数値積分と期待値計算での使い方|解析解が無い問題を平均で近似
円周率は入口で、モンテカルロ法の実用の中心は数値積分と期待値計算です。手で積分できない複雑な関数や、変数が何十個も絡む高次元の積分を、乱数の平均に置き換えて計算します。
解析的に解けない積分を乱数の平均値で近似する数値積分の考え方
ある区間で関数を積分したい場合、その区間から一様乱数で点を多数サンプリングし、関数値の平均に区間の幅を掛けると積分の近似になります。台形公式やシンプソン法といった従来の数値積分は、変数(次元)が増えると必要な計算点が指数的に膨らみ、10次元を超えると現実的に手が出せません。モンテカルロ積分の強みはここで、誤差の縮み方が次元の数に依存しないため、高次元でも同じ枠組みで押し通せます。金融商品の価格計算や物理シミュレーションで多次元積分が避けられない場面では、事実上の標準的な選択肢になります。
収束は試行回数の平方根に反比例|精度を上げる分散削減の実務的工夫
モンテカルロ法の誤差は、試行回数をNとするとおよそ1/√Nで縮みます。誤差を半分にするには試行を4倍、1/10にするには100倍という、緩やかで容赦のない収束です。そこで、単純に回数を増やす前に「1回あたりのばらつき(分散)」を下げる工夫が実務では効きます。代表的なのが、乱数を層に分けて偏りを抑える層化抽出、あえて負の相関を持つペアを作る対照変数法、サンプルを重点的に効く領域へ寄せる重点サンプリングです。同じ精度を1/10の試行で得られれば、計算時間とコストが直接下がります。回数で殴る前に分散を削る——これが計算資源を減らす基本方針です。
業務での応用範囲|金融リスク評価から工期見積もりと強化学習まで
モンテカルロ法が事業で使われるのは、複数の不確実な要因が絡み、結果が確率分布になる場面です。単一の予測値ではなく「起こりうる範囲とその確率」を出せる点が、意思決定の材料として効きます。
金融のVaRやデリバティブ評価に用いる確率的なリスク計測手法
金融では、株価や金利が確率的に動く前提でシナリオを何万通りも生成し、ポートフォリオの損益分布を作ります。ここから、一定期間に一定確率で被りうる最大損失を示すのがVaR(バリュー・アット・リスク)です。オプションなど、満期までの経路に価格が依存するデリバティブの評価でも、価格経路をランダムに多数生成して平均する方法が使われます。式で解けない複雑な条件付き商品ほど、この手法の出番になります。
工期とコストの不確実性を確率分布として見積もるプロジェクト管理
各作業の所要日数を「最短・最頻・最長」の幅として与え、乱数でスケジュール全体を何千回も試算すると、プロジェクトの完了日が単一の日付ではなく分布として得られます。「90%の確率で◯月◯日までに完了」といった表現ができるのも、単一の予測値にはない強みです。確定的なガントチャート1本より現実的な合意形成に向きます。コスト見積もりでも同じ考え方で、予算超過の確率を数値で示せます。
強化学習やベイズ推定での利用とMCMCへ発展する手法の位置づけ
機械学習では、強化学習のモンテカルロ法が代表例です。エージェントに実際にエピソードを最後まで行動させ、得られた報酬の平均から各状態や行動の価値を見積もります。環境のモデルが未知でも、経験のサンプルだけで価値を推定できる点が実装上の利点です。ベイズ推定では、複雑な事後分布から直接サンプリングできないときに、乱数の系列を工夫して分布を近似します。ここで登場する代表手法がMCMC(マルコフ連鎖モンテカルロ法)の仕組みとアルゴリズムで、独立な乱数ではなく直前の状態から次を生成する連鎖で、高次元の分布を効率よく探索します。本記事の一般モンテカルロ法が土台、MCMCがその発展形という位置づけです。
企業がモンテカルロ法を業務システムへ実装すべき条件と見送る場面
手法として強力でも、自社の業務システムに組み込むかは別の判断です。実装・運用のコストと、得られる精度・計算時間が見合うかを2軸で見極めます。玉虫色を避け、採用する場面と避ける場面を条件付きで言い切ります。
採用が見合う条件|解析解が無く高次元で不確実性が絡む計算処理の型
採用が見合うのは、次の条件がそろうときです。第一に、厳密な数式では解けない、あるいは変数が多く従来の数値計算では計算量が爆発する問題であること。第二に、入力に確率的なばらつきがあり、単一の予測値より「分布として範囲を出す」ことに意味があること。第三に、バッチ処理や日次計算で回せて、数秒〜数分の計算時間を許容できること。リスク管理、需要予測、価格シミュレーション、設備の稼働シミュレーションはこの型にはまります。こうした確率的シミュレーションや機械学習の実装を自社の基幹システムへ組み込む段階では、要件定義から運用までを外部の開発体制で固める選択肢があり、AI・機械学習を用いたシステムの受託開発で、どのアルゴリズムを業務のどこに載せるかを設計から相談できます。
見送るべき場面|低次元で解析解があるケースやリアルタイム要件
逆に、モンテカルロ法を持ち込むべきでない場面もはっきりしています。変数が1〜2個で、公式や既存の数値解法で厳密に解けるなら、乱数で近似するのは計算量の無駄で、誤差を持ち込むだけです。ミリ秒単位の応答が要るリアルタイム処理も不向きで、精度を担保する試行回数を回す時間がありません。さらに、疑似乱数の質やシードの管理が甘いと、それらしい数値が出ても結果が偏ります。「近似でよい理由」と「許容できる誤差の大きさ」を先に決められない案件では、導入をいったん止めるのが賢明です。数値の見た目に説得力があるぶん、前提が崩れた確率計算はかえって判断を誤らせます。
よくある質問
モンテカルロ法の学習や実装でつまずきやすい点を、検索されやすい疑問に沿って整理します。
モンテカルロ法とシミュレーションの違いは何ですか?
シミュレーションは「現象を模擬的に再現する」こと全般を指す広い言葉で、モンテカルロ法はその中でも乱数を使って確率的に計算する一手法です。歯車の動きを物理法則どおり計算する決定論的シミュレーションは乱数を使いません。入力に確率的なばらつきを与え、多数の試行から分布を得るものを特にモンテカルロ・シミュレーションと呼びます。
モンテカルロ法とマルコフ連鎖モンテカルロ法(MCMC)の違いは?
一般のモンテカルロ法は、各試行を互いに独立に生成します。MCMCは、直前のサンプルから次のサンプルを作る「連鎖」で系列を生成する点が違いです。独立に乱数を打つのが難しい高次元・複雑な確率分布からのサンプリングに向き、ベイズ推定で多用されます。まず本記事で一般法を押さえ、MCMCは発展形として理解すると混乱しません。
モンテカルロ法の精度を上げるにはどうすればよいですか?
基本は試行回数を増やすことですが、誤差は1/√Nでしか縮まないため、回数を4倍にして誤差が半分という効率です。実務では、層化抽出・対照変数法・重点サンプリングといった分散削減の工夫で、少ない試行のまま精度を引き上げます。疑似乱数の品質を確保し、シードを固定して再現性を担保することも精度管理の一部です。
モンテカルロ法はどんな言語やライブラリで実装できますか?
特別なツールは要りません。Pythonなら標準のrandomモジュールやnumpy.randomで数十行から書けます。統計や金融の本格的な計算では、確率的プログラミング向けのPyMCやStanといったライブラリが、MCMCを含むサンプリングを高水準に扱えます。まずは円周率推定を自作し、仕組みを体で掴んでからライブラリへ移るのが近道です。
モンテカルロ法とラスベガス法の違いは何ですか?
どちらも乱数を使うアルゴリズムですが、出力の性質が逆です。モンテカルロ法は計算時間を固定する代わりに、答えが近似(確率的に正しい)になります。ラスベガス法は必ず正しい答えを返しますが、そのぶん計算時間が乱数しだいで変動する点が対照的です。「精度を妥協して時間を固定する」のがモンテカルロ法だと捉えると区別しやすくなります。
関連記事
- MCMC(マルコフ連鎖モンテカルロ法)とは:本記事の発展形。連鎖でサンプリングする特定手法とベイズ推定への使い方を深掘りしています。