MCPで接続 →

計算を入力してください

公式

Show calculation steps (1)
  1. Distribution Statistics

    Distribution Statistics: 対数正規分布に基づく乱数の生成

    Theoretical mean, median, and variance of the log-normal distribution from mu and sigma.

広告

結果

生成された対数正規乱数
10
正の対数正規乱数(Box-Muller法)
0.0.3207611306
1.6.351710669
2.0.3902105234
3.2.666531034
4.0.02289427496
5.6.148023024
6.40.27415799
7.17.59377473
8.11.29883550
9.98.21320187
Theoretical mean E[X] = exp(μ + σ²/2) 20.085537
Theoretical median = exp(μ) 2.718282
理論上の分散 Var[X] 21,623.037001

このツールでできること

本ツールは、対数正規分布に従う擬似乱数の一覧を生成します。確率変数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 はごく小さな値(イプシロン)でクランプしています。

2つの一様乱数を対数正規値に変換するボックス=ミュラー変換のフロー図
2つの一様乱数はボックス=ミュラー法で標準正規分布Zになり、スケーリングと指数化を経てXになる。

計算例

\(\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)\) であり、出力はすべて厳密に正の値です。

最終更新: