モンテカルロ法でπを計算 戻る
数理・統計

モンテカルロ法でπを計算

乱数による点の散布と単位円内判定でπを推定。サンプル数を増やすにつれ真値に収束する過程をリアルタイムで可視化します。

パラメータ設定
バッチサイズ(点/回)
描画速度(フレーム間隔 ms)
ms
収束履歴
— シミュレーション開始待ち —
計算結果
π 推定値
0
総サンプル N
0
円内ヒット数
相対誤差
Mc
π 推定値の収束
理論・主要公式

単位正方形 $[-1,1]^2$ 内の一様乱数点 $(x,y)$ が単位円内 $x^2+y^2 \le 1$ に入る確率は $\frac{\pi}{4}$。

$$\pi \approx 4 \times \frac{\text{円内点数}}{\text{総点数 } N}$$

標準誤差:$\sigma_\pi \approx \dfrac{4\sqrt{p(1-p)}}{\sqrt{N}}$, $p = \dfrac{\pi}{4}\approx 0.785$

収束速度:誤差 $\propto 1/\sqrt{N}$。精度10倍にはサンプル数100倍必要。

モンテカルロ法でπを計算とは

🙋
モンテカルロ法で円周率が求められるって、どういう仕組みなんですか?
🎓
大まかに言うと、ダーツ投げの確率で面積比を計算するんだ。このシミュレーターで言うと、辺の長さが2の正方形の中に、半径1の円がぴったり入っているよね。ランダムに点を打ったとき、その点が円の中に入る確率は「円の面積÷正方形の面積」、つまり $\pi/4$ になる。だから、円内の点の数を数えればπが推定できるんだ。上の「バッチサイズ」スライダーを大きくして一度にたくさん点を打ってみると、値がπに近づく様子がわかるよ。
🙋
え、でもランダムなのに精度は大丈夫なんですか?何万回もやらないとダメな気がします。
🎓
良いところに気づいたね。その通りで、モンテカルロ法の誤差はサンプル数 $N$ の平方根 $\sqrt{N}$ に反比例する。精度を10倍にしたかったら、点の数は100倍必要になるんだ。シミュレーターのグラフを確認してみて。推定値がジグザグしながらだんだんπに収束していくでしょ。「描画速度」を遅くすると、その収束の一歩一歩がよく観察できるよ。実務でも、この「どれだけ打てばどれだけ精度が出るか」の見積もりは特に重要だ。
🙋
なるほど!でも、円周率を求める以外に、CAEでこんな計算使う場面ってあるんですか?
🎓
もちろん!これが「確率論的解析」の基本なんだ。例えば自動車の衝突安全性を考える時、材料強度や板厚にはバラつきがあるよね。モンテカルロ法を使うと、そのバラつきを考慮して「部品が破損する確率」を計算できる。FEM(有限要素法)のシミュレーションを、材料特性をランダムに変えながら何千回も実行して確率を求めるんだ。このπ計算は、その高次元で複雑な積分を、ランダムサンプリングでシンプルに解く考え方の一番わかりやすい例なんだよ。

よくある質問

確率的に近づきますが、毎回単調に収束するわけではありません。大数の法則によりサンプル数が増えるほど真値に近づく確率が高まりますが、途中で真値から遠ざかることもあります。標準誤差はサンプル数の平方根に反比例して減少します。
モンテカルロ法は乱数を用いるため、推定値には統計的な揺らぎ(標準誤差)が常に存在します。サンプル数を10倍にしても誤差は約1/3にしか減らず、完全に安定することはありません。より安定した結果を得るには、サンプル数を大幅に増やすか、複数回の試行平均を取ってください。
影響します。質の低い乱数(偏りがある、周期性が短いなど)を使うと、点の分布に偏りが生じ、πの推定値に系統誤差が生じる可能性があります。本ツールでは十分にランダムな疑似乱数を使用していますが、より高精度が必要な場合は暗号論的乱数や準乱数(低食い違い列)の利用を検討してください。
標準誤差(σ ≈ π/√N)を目安にしてください。例えばN=10,000の場合、標準誤差は約0.031程度です。推定値±2σの範囲に真のπが約95%の確率で含まれます。また、サンプル数を変えて複数回実行し、結果のばらつきを確認することも有効です。

実世界での応用

構造信頼性解析: 橋梁や建築物の設計において、材料強度や荷重などの不確実性を考慮し、構造物が破壊に至る確率を評価します。有限要素法(FEM)とモンテカルロ法を組み合わせたMC-FEMは、この分野の標準的な手法の一つです。

金融工学におけるリスク評価: オプション価格の計算(モンテカルロ・シミュレーション)や、ポートフォリオのバリュー・アット・リスク(VaR)の推定に用いられます。多数の将来シナリオをランダムに生成して、損失の確率分布を求めます。

高次元数値積分: 物理学や化学における多次元の積分計算(例えば、量子力学の経路積分)で、従来の数値積分法が適用困難な場合に威力を発揮します。次元が高くなっても誤差の収束率が $1/\sqrt{N}$ で変わらないことが利点です。

レンダリング(光線追跡): コンピュータグラフィックスで写実的な画像を生成する際、シーン中の光源から発せられる光の経路をランダムにサンプリングして、画素ごとの色(輝度)を積分計算します。これにより、間接照明や複雑な影を自然に表現できます。

よくある誤解と注意点

まず、「ランダムだからこそ、初期の結果は大きく異なる値になることがある」という点を押さえておこう。例えば、最初の10点だけを見て「πは2.8だ!」と判断するのは早計だ。モンテカルロ法は大数の法則に基づくので、サンプル数が少ないうちの推定値は「運」に大きく左右される。必ず十分な点を打って、グラフが落ち着く傾向を見る必要があるんだ。

次に、「バッチサイズ」と「描画速度」の設定の意味を混同しないでほしい。「バッチサイズ」は1ステップで追加する点の数で、収束の速さ(計算時間)に直結する。一方、「描画速度」はその結果を画面に表示する速さで、学習用の視覚化に影響するだけだ。実務のシミュレーションでは、バッチサイズを大きくして一気に計算を回し、描画は省略するのが普通だよ。

最後に、最も重要な落とし穴は「疑似乱数」の質だ。このデモツールは簡易的な乱数を使っているかもしれないが、本格的なCAEでは乱数の偏りや周期性が結果に悪影響を与える。例えば、金融工学のリスク計算のように何百万回も試行する場合、高品質な乱数生成アルゴリズム(メルセンヌ・ツイスタなど)の選択が必須になる。このπ計算で「なぜかある範囲に点が偏るな」と感じたら、乱数源を疑うクセをつけよう。