Вы можете использовать функцию lognorm() из библиотеки SciPy в Python, чтобы сгенерировать случайную переменную, которая следует логарифмически нормальному распределению.
В следующих примерах показано, как использовать эту функцию на практике.
Как сгенерировать логнормальное распределение
Вы можете использовать следующий код для генерации случайной величины, которая соответствует логарифмически нормальному распределению с μ = 1 и σ = 1:
import math
import numpy as np
from scipy. stats import lognorm
#make this example reproducible
np.random.seed ( 1 )
#generate log-normal distributed random variable with 1000 values
lognorm_values = lognorm. rvs (s= 1 , scale=math. exp ( 1 ), size= 1000 )
#view first five values
lognorm_values[:5]
array([13.79554017, 1.47438888, 1.60292205, 0.92963 , 6.45856805])
Обратите внимание, что в функции lognorm.rvs() s — это стандартное отклонение, а значение внутри math.exp() — это среднее значение логарифмически нормального распределения, которое вы хотите сгенерировать.
В этом примере мы определили среднее значение равным 1 , а стандартное отклонение также равно 1 .
Как построить логнормальное распределение
Мы можем использовать следующий код для создания гистограммы значений логарифмически нормально распределенной случайной величины, которую мы создали в предыдущем примере:
import matplotlib.pyplot as plt
#create histogram
plt.hist (lognorm_values, density= True , edgecolor='black')

Matplotlib по умолчанию использует 10 бинов в гистограммах, но мы можем легко увеличить это число, используя аргумент bins .
Например, мы можем увеличить количество бинов до 20:
import matplotlib.pyplot as plt
#create histogram
plt.hist (lognorm_values, density= True , edgecolor='black', bins= 20 )

Чем больше количество интервалов, тем более узкими будут столбцы на гистограмме.
Связанный: Три способа настроить размер интервала в гистограммах Matplotlib
Дополнительные ресурсы
В следующих руководствах объясняется, как работать с другими распределениями вероятностей в Python:
Как использовать распределение Пуассона в Python
Как использовать экспоненциальное распределение в Python
Как использовать равномерное распределение в Python