Spec-Zone.ru › NumPy 1.20

numpy.random.Generator.normal

метод

random.Generator.normal(loc=0.0, scale=1.0, size=None)

Генерирует случайные выборки из нормального (гауссова) распределения.

Функция плотности вероятности нормального распределения, впервые выведенная Де Муавром, а спустя 200 лет независимо Гауссом и Лапласом [2], часто называется колоколообразной кривой из-за её характерной формы (см. пример ниже).

Нормальные распределения часто встречаются в природе. Например, они описывают часто встречающиеся распределения выборок, подверженных воздействию большого числа мелких случайных возмущений, каждое со своим уникальным распределением [2].

Параметры
locfloat or array_like of floats

Математическое ожидание (центр) распределения.

scalefloat or array_like of floats

Среднее квадратическое отклонение (разброс или «ширина») распределения. Должно быть неотрицательным.

sizeint or tuple of ints, optional

Форма выходных данных. Если заданная форма, например, (m, n, k), то генерируется m * n * k выборок. Если размер равен None (по умолчанию), возвращается одно значение, если loc и scale являются скалярами. В противном случае генерируется np.broadcast(loc, scale).size выборок.

Возвращаемое значение
outndarray or scalar

Сгенерированные выборки из параметризованного нормального распределения.

См. также

scipy.stats.norm

функция плотности вероятности, распределение или функция кумулятивного распределения и т. д.

Примечания

Функция плотности вероятности гауссова распределения

p(x) = \frac{1}{\sqrt{ 2 \pi \sigma^2 }}
e^{ - \frac{ (x - \mu)^2 } {2 \sigma^2} },

где \mu — математическое ожидание, а \sigma — среднее квадратическое отклонение. Квадрат среднего квадратического отклонения, \sigma^2, называется дисперсией.

Функция имеет пик в математическом ожидании, и её «разброс» увеличивается со средним квадратическим отклонением (функция достигает 0,607 от своего максимума при x + \sigma и x - \sigma [2]). Это означает, что normal с большей вероятностью вернёт выборки, близкие к математическому ожиданию, а не удалённые от него.

Ссылки

1

Википедия, «Нормальное распределение», https://en.wikipedia.org/wiki/Normal_distribution

2(1,2,3)

P. R. Peebles Jr., «Центральная предельная теорема» в «Вероятность, случайные величины и случайные сигналы», 4-е изд., 2001, стр. 51, 51, 125.

Примеры

Генерация выборок из распределения:

>>> mu, sigma = 0, 0.1 # mean and standard deviation
>>> s = np.random.default_rng().normal(mu, sigma, 1000)

Проверка математического ожидания и дисперсии:

>>> abs(mu - np.mean(s))
0.0  # may vary
>>> abs(sigma - np.std(s, ddof=1))
0.1  # may vary

Вывод гистограммы выборок вместе с функцией плотности вероятности:

>>> import matplotlib.pyplot as plt
>>> count, bins, ignored = plt.hist(s, 30, density=True)
>>> plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
...                np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
...          linewidth=2, color='r')
>>> plt.show()
../../../_images/numpy-random-Generator-normal-1_00_00.png

Двухстрочный массив выборок из N(3, 6.25):

>>> np.random.default_rng().normal(3, 2.5, size=(2, 4))
array([[-4.49401501,  4.00950034, -1.81814867,  7.29718677],   # random
       [ 0.39924804,  4.68456316,  4.99394529,  4.84057254]])  # random

© 2005–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/random/generated/numpy.random.Generator.normal.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API