piapia123
ja

モンテカルロ法による π の推定

生成

処理はすべてブラウザ内で完結します。データは送信されません

出力

原理は一行です。一辺 1 の正方形にランダムに点を打つと、四分円の内側に入る割合はおよそ π/4 になります —— 四分円の面積が π/4 で、正方形が 1 だからです。したがって `π ≈ 4 × 円内の点数 ÷ 全点数` です。 精度は 1/√n のオーダーしかありません。これははっきり書いておく必要があります。 誤差はサンプル数の平方根で減ります:小数第 1 位を増やすにはサンプルを 100 倍にします。100 万点でようやく 3 桁程度、1 億点で 4 桁です —— 一方π の桁を調べるツールは小数第 1 万位まで直接返します。つまりこのツールの価値はπ を計算することにはなく、モンテカルロ法の最小の動く例であること、そして「桁を 1 つ増やすのに 2 桁ぶんのサンプルが要る」ことを目に見える形にすることにあります。 収束の過程を出すのはなぜか。 最終値だけでは、その推定がたまたま良かったのか本当に収束したのかが分かりません。10 の累乗ごとの累積推定値を並べれば、3.14159… にじわじわ近づく様子と、値のばたつき方が見えます。 乱数源は `Math.random` ではなく `crypto.getRandomValues` です。

機能

  • 四分円の内側に入る割合を 4 倍して π を推定
  • サンプル数・円内の点数・推定値・相対誤差を表示
  • 10 の累乗ごとの収束を表示し、精度の上がり方を見られる
  • サンプル数は最大 200 万点まで(約 1 秒)
  • 誤差は相対値なので、1/√n のオーダーと直接見比べられます
  • 乱数源は `crypto.getRandomValues`。値の間で使い回しません
  • 実行ごとに結果は少し変わります。「再実行」で引き直せます
  • すべて端末内で計算し、外部への通信はありません

使い方

  1. サンプル数を入力します(既定は 100 万点)
  2. 結果欄の推定値と相対誤差を読みます
  3. 収束の過程まで見ると、10 倍ごとに何が得られるかが分かります
  4. 「再実行」で新しい点の一批を引き直せます

よくある質問

推定値が 3.14 の周りでばたつくのはなぜですか?
これは手法そのものの性質で、実装の不具合ではありません。モンテカルロ法の誤差は 1/√n で減ります —— サンプルを 100 倍にしても誤差は 1/10 にしかなりません。100 万点でも相対誤差は 0.1% 程度、つまり小数 3 桁ぶんの安定です。正確な π が欲しい場合は定数の桁ツールが組み込みの 1 万桁をそのまま返します。
このツールには何の意味がありますか?
2 つあります。1 つ目は、モンテカルロ法の最小の動く例であること —— 原理は一行で理解でき、しかも「決まった量をランダムな標本で推定する」という、金融価格の算定、物理シミュレーション、ベイズ推論の土台にある考え方そのものを示しています。2 つ目は、収束の遅さを見える形にすること:表では 1000 点と 100 万点の推定値はあまり違いませんが、サンプル数は 1000 倍になっています。この感覚は式だけでは身につきません。
サンプル数はいくつが適切ですか?
何を見たいかによります。収束の様子だけなら 1 万点で十分(即座に出ます)。3.14159 に近い推定値なら 100 万点で 200 ミリ秒ほど、誤差は通常 0.1% 以内です。200 万点が上限です —— それ以上は手法の性質(√n の項)で効果が決まり、待ち時間だけが目立って延びます。

関連ツール