デモ選択
被積分関数
サンプル数 N
収束グラフ
理論・主要公式
単位正方形にランダムにダーツを投げ、$x^2+y^2 \le 1$ の円内に入った割合から:
$$\pi \approx 4 \times \frac{\text{円内の数}}{N}$$
誤差は $O(1/\sqrt{N})$ で減少。
母平均 $\mu$、母分散 $\sigma^2$ のとき、
$$\bar{X}_n \xrightarrow{d}N\!\left(\mu,\frac{\sigma^2}{n}\right)$$
$n$ が大きいほど正規分布に近づく。
$[0,1]$ でランダムに $x_i$ を選び、
$$\int_0^1 f(x)\,dx \approx \frac{1}{N}\sum_{i=1}^N f(x_i)$$
曲線の下に入った点の割合 × 面積で推定。
各ステップで独立に方向を選択。
平均二乗変位 $\langle r^2 \rangle = N \cdot (\Delta x)^2$
これが拡散方程式の基礎:$\langle r^2 \rangle = 2dDt$
モンテカルロ法シミュレーターとは
🙋
モンテカルロ法って、ランダムに点を打つだけで本当に円周率が計算できるんですか?
🎓
そうなんだ。大まかに言うと、ダーツをランダムに投げて、円の中に入った割合からπを推定する方法だよ。このシミュレーターで「N」の値を大きくしてみると、点が増えるにつれて推定値が3.14159...に近づいていくのがリアルタイムで見えるよ。
🙋
え、でもランダムなのに、なぜ収束するんですか?誤差はどれくらいですか?
🎓
良い質問だね。これは大数の法則が働くからで、誤差はサンプル数の平方根に反比例して減るんだ。つまり、精度を10倍にするには点の数を100倍にしないといけない。実務では、この「$O(1/\sqrt{N})$」の収束速度が鍵になるね。上の「描画速度」スライダーを速くして、大量の点で確認してみて。
🙋
なるほど!「中心極限定理」や「ランダムウォーク」のタブもありますが、これも同じ「ランダム」を使った計算なんですか?
🎓
その通り!中心極限定理は、どんな分布から取ったサンプル平均も、サンプル数(ここでは「標本数」と「各標本の大きさ」)が増えれば正規分布に近づく様子を視覚化してる。ランダムウォークは「N steps」と「ウォーカー数」を変えると、粒子の拡散や株価の変動みたいな現象のシミュレーションができるんだ。全部、モンテカルロ法の応用なんだよ。
よくある質問
サンプル数Nを増やすことで誤差がO(1/√N)で減少します。具体的には、Nを4倍にすると誤差が約半分になります。また、乱数生成の品質にも依存するため、必要に応じて乱数シードを固定して再現性を確保することも有効です。
モンテカルロ法はランダムサンプリングに基づくため、実行ごとに推定値が変動します。これは統計的な誤差であり、サンプル数Nが小さいほどばらつきが大きくなります。Nを増やすと推定値は真のπに近づき、ばらつきも減少します。
単位正方形内で定義された任意の関数f(x,y)の積分を近似できます。例えば、f(x,y)=x^2+y^2のような連続関数や、不連続な関数も扱えます。ただし、関数の値域が大きいと収束が遅くなるため、適切なサンプリング範囲の設定が推奨されます。
サンプル平均の計算に使う元の分布の種類や、1回あたりのサンプルサイズ(標本サイズ)が小さいと収束が遅くなります。標本サイズを大きく(例:30以上)し、繰り返し回数(シミュレーション回数)を増やすと、より明確な正規分布が観察できます。
実世界での応用
金融工学(リスク評価):オプション価格の評価や投資ポートフォリオのリスク(VaR)計算に使われます。株価のランダムな変動を何万回もシミュレートし、損失が発生する確率を推定します。
放射線治療計画:人体内での放射線の飛跡とエネルギー付与をモンテカルロ法で詳細にシミュレーションします。これにより、腫瘍に最大の線量を、健康な組織には最小の線量を与える最適な治療計画を立てることができます。
半導体設計:微細な半導体デバイス内での電子の挙動は拡散や散乱のプロセスを含みます。ランダムウォークモデルを用いたモンテカルロシミュレーションで、電流特性や信頼性を評価します。
コンピュータグラフィックス(レンダリング):フォトリアルな画像を生成するレイトレーシングで、光の経路をランダムにサンプリングして計算します。拡散反射や間接照明など、複雑な光の挙動を現実的に再現する核心技術です。
よくある誤解と注意点
まず、「ランダムだから何でもできる」という過信は禁物だよ。モンテカルロ法は万能ではなく、問題によっては収束が恐ろしく遅くて実用にならない。例えば、極めて稀な事象(リスク管理でいう「テールリスク」)の確率を直接推定しようとすると、ほとんど点がヒットせず、膨大な計算コストがかかってしまう。こういう時は、重点サンプリングなどの高度な手法が必要になるんだ。
次に、「疑似乱数」の質を軽視しないこと。シミュレーターで使っているのは完全な乱数ではなく、アルゴリズムで生成する「疑似乱数」だ。実務では、この周期が短かったり偏りがあったりすると、結果が歪んでしまうことがある。例えば、金融の大規模シミュレーションでは、メルセンヌ・ツイスタなどの高品質な生成器が必須だ。
最後に、収束の判断をグラフの見た目だけで行わないこと。円周率の推定で値が3.14に近づいても、それは一つの実行結果に過ぎない。本当の意味での精度を評価するには、同じ条件でシミュレーションを独立に複数回(例えば100回)実行し、推定値のばらつき(標準偏差)を見る必要がある。このツールで「N=10000」を何度もリセットして実行してみると、毎回少しずつ異なる値に収束していくのがわかる。これが統計的誤差の実体だ。