Подключиться через 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
положительные логнормальные величины (Бокс–Мюллер)
0.30.25574657
1.0.1816998414
2.1.004092593
3.2.152360208
4.0.2404215889
5.7.092627095
6.2.056951487
7.0.5093704871
8.16.14841240
9.0.2051581759
Theoretical mean E[X] = exp(μ + σ²/2) 20,085537
Theoretical median = exp(μ) 2,718282
Теоретическая дисперсия Var[X] 21 623,037001

Что делает этот генератор

Инструмент формирует список псевдослучайных чисел, подчиняющихся логнормальному распределению. Случайная величина \(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}$$
Блок-схема преобразования Бокса — Мюллера, превращающего два равномерных числа в логнормальное значение
Два равномерных случайных числа преобразуются в стандартную нормальную \(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\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)\), поэтому все результаты строго положительны.

Последнее обновление: