このツールでできること
本ツールは、対数正規分布に従う擬似乱数の一覧を生成します。確率変数Xの自然対数 \(\ln(X)\) が正規分布に従うとき、Xは対数正規分布に従うといいます。本ツールではまず、古典的なBox-Muller法によって標準正規乱数を生成し、目的の正規分布 \(N(\mu, \sigma^2)\) にスケーリングしたうえで指数変換を行い、必ず正の値となる対数正規乱数を得ます。
重要:μとσが表す意味
パラメータの \(\mu\) と \(\sigma\) は、もとになる正規分布(つまり \(\ln(X)\) の分布)の平均と標準偏差です。X そのものの平均・標準偏差ではありませんので、ご注意ください。実際の X の平均は \(\exp(\mu + \sigma^2/2)\)、中央値は \(\exp(\mu)\)、分散は \((\exp(\sigma^2) - 1)\cdot\exp(2\mu + \sigma^2)\) となります。これらの理論値は生成結果とあわせて表示されるので、出力が妥当かどうかの確認に役立ちます。
使い方
\(\mu\)(任意の実数)、\(\sigma\)(0以上)、生成したい個数(1~1000)を入力します。表示する有効桁数も指定してください。実行のたびに新しい一様乱数が引かれるため、得られる値は毎回変わります。Box-Muller法では一様乱数の組から正規乱数が2つ得られるため、奇数個を指定した場合は余った1つを単に破棄します。
計算式の解説
区間 (0,1] の一様乱数 U1, U2 に対し、\(Z = \sqrt{-2\ln U_1}\,\cos(2\pi U_2)\) とすると \(Z \sim N(0,1)\) となります。次に \(Y = \mu + \sigma\cdot Z\) は \(N(\mu, \sigma^2)\) に従い、\(X = \exp(Y)\) が対数正規分布に従います。 $$X = \exp\!\left(\mu + \sigma\, Z\right), \quad Z = \sqrt{-2\ln U_1}\,\cos(2\pi U_2)$$ \(\ln(0)\) を避けるため、U1 はごく小さな値(イプシロン)でクランプしています。
計算例
\(\mu = 1\)、\(\sigma = 2\) とし、\(U_1 = 0.5\)、\(U_2 = 0.25\) とします。すると \(R = \sqrt{-2\ln 0.5} = 1.17741\) です。\(Z_1 = R\cdot\cos(\pi/2) = 0\)、\(Z_2 = R\cdot\sin(\pi/2) = 1.17741\) となり、 $$X_1 = \exp(1) = 2.71828, \quad X_2 = \exp(1 + 2\cdot 1.17741) = \exp(3.35482) \approx 28.64$$ が得られます。理論上の平均 \(\exp(3) = 20.0855\)、中央値 \(\exp(1) = 2.71828\) とも整合しています。
よくある質問
実行のたびに値が変わるのはなぜですか? Math.random() を用いた確率的な生成であり、シードを固定していないため、毎回異なる結果になります。
σ = 0 のときはどうなりますか? 分布は退化し、すべての値が \(\exp(\mu)\) と等しくなります。
負の値が出ることはありますか? ありません。対数正規分布の台は \((0, \infty)\) であり、出力はすべて厳密に正の値です。