Что делает этот генератор
Инструмент формирует список псевдослучайных чисел, подчиняющихся логнормальному распределению. Случайная величина \(X\) является логнормальной, если её натуральный логарифм \(\ln(X)\) распределён нормально. Сначала генератор получает стандартные нормальные величины с помощью классического преобразования Бокса–Мюллера, масштабирует их под целевое нормальное распределение \(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)\). Эти эталонные значения показываются рядом с вашей выборкой, чтобы вы могли проверить корректность результата.
$$\begin{aligned} \text{Mean} &= \exp\!\left(\mu + \tfrac{1}{2}\sigma^{2}\right) \\ \text{Median} &= \exp\!\left(\mu\right) \\ \text{Var} &= \left(e^{\sigma^{2}} - 1\right) e^{\,2\mu + \sigma^{2}} \end{aligned}$$Как пользоваться
Введите \(\mu\) (любое действительное число), \(\sigma\) (ноль или положительное значение) и нужное количество чисел (от 1 до 1000). Выберите, сколько значащих цифр отображать. Каждый запуск берёт новые равномерно распределённые случайные числа, поэтому значения меняются каждый раз. Поскольку метод Бокса–Мюллера даёт две нормальные величины на каждую пару равномерных, при нечётном количестве одна лишняя величина просто отбрасывается.
Разбор формулы
Для равномерных \(U_1, U_2\) на промежутке \((0,1]\): \(Z = \sqrt{-2\ln U_1}\,\cos(2\pi U_2)\) даёт \(Z \sim N(0,1)\). Далее \(Y = \mu + \sigma Z\) имеет распределение \(N(\mu, \sigma^2)\), а \(X = \exp(Y)\) является логнормальной величиной. Чтобы избежать \(\ln(0)\), мы ограничиваем \(U_1\) снизу крошечным значением эпсилон.
$$\begin{gathered} X = \exp\!\left(\mu + \sigma\, Z\right) \\[1.5em] \text{where}\quad \left\{ \begin{aligned} Z &= \sqrt{-2\ln U_1}\,\cos(2\pi U_2) \\ U_1, U_2 &\sim \text{Uniform}(0,1) \end{aligned} \right. \end{gathered}$$
Пример расчёта
При \(\mu = 1\), \(\sigma = 2\) возьмём \(U_1 = 0{,}5\), \(U_2 = 0{,}25\). Тогда $$R = \sqrt{-2\ln 0{,}5} = 1{,}17741.$$ \(Z_1 = R\cos(\pi/2) = 0\) и \(Z_2 = R\sin(\pi/2) = 1{,}17741\). Значит, \(X_1 = \exp(1) = 2{,}71828\), а $$X_2 = \exp(1 + 2\cdot 1{,}17741) = \exp(3{,}35482) \approx 28{,}64.$$ Теоретическое среднее \(\exp(3) = 20{,}0855\) и медиана \(\exp(1) = 2{,}71828\) этому соответствуют.
Частые вопросы
Почему значения разные при каждом запуске? Это стохастический генератор на основе Math.random(); без фиксированного зерна (seed) каждый запуск даёт другой результат.
Что если σ = 0? Распределение вырождается, и каждое значение равно \(\exp(\mu)\).
Может ли значение быть отрицательным? Нет — область значений логнормального распределения это \((0, \infty)\), поэтому все результаты строго положительны.