Spec-Zone.ru › NumPy 1.19

numpy.random.Generator.multinomial

метод

Generator.multinomial(n, pvals, size=None)

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

Многомерное распределение является многомерным обобщением биномиального распределения. Рассмотрим эксперимент с одним из p возможных исходов. Примером такого эксперимента является бросание игральной кости, где результатом может быть число от 1 до 6. Каждая выборка, извлеченная из распределения, представляет n таких экспериментов. Её значения, X_i = [X_0, X_1, ..., X_p], представляют количество раз, когда результатом был i.

Параметры
nint or array-like of ints

Количество экспериментов.

pvalssequence of floats, length p

Вероятности каждого из p различных исходов. Они должны суммироваться до 1 (однако, последний элемент всегда предполагается, чтобы учесть оставшуюся вероятность, при условии, что sum(pvals[:-1]) <= 1)).

sizeint or tuple of ints, optional

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

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

Сгенерированные выборки, с формой size, если она была задана. Если нет, то форма (N,).

Другими словами, каждый элемент out[i,j,...,:] представляет N-мерное значение, сгенерированное из распределения.

Примеры

Бросаем игральную кость 20 раз:

>>> rng = np.random.default_rng()
>>> rng.multinomial(20, [1/6.]*6, size=1)
array([[4, 1, 7, 5, 2, 1]])  # random

Она 4 раза упала на 1, 1 раз на 2 и т.д.

Теперь бросаем игральную кость 20 раз, и еще 20 раз:

>>> rng.multinomial(20, [1/6.]*6, size=2)
array([[3, 4, 3, 3, 4, 3],
       [2, 4, 3, 4, 0, 7]])  # random

Для первого раза мы бросили 3 раза 1, 4 раза 2 и т.д. Для второго раза мы бросили 2 раза 1, 4 раза 2 и т.д.

Теперь сделаем один эксперимент, бросив игральную кость 10 раз, и 10 раз, и еще один, бросив 20 раз, и 20 раз:

>>> rng.multinomial([[10], [20]], [1/6.]*6, size=2)
array([[[2, 4, 0, 1, 2, 1],
        [1, 3, 0, 3, 1, 2]],
       [[1, 4, 4, 4, 4, 3],
        [3, 3, 2, 5, 5, 2]]])  # random

Первый массив показывает результаты бросания игральной кости 10 раз, а второй — результаты бросания 20 раз.

Нагруженная игральная кость чаще падает на цифру 6:

>>> rng.multinomial(100, [1/7.]*5 + [2/7.])
array([11, 16, 14, 17, 16, 26])  # random

Вводимые вероятности должны быть нормированы. В качестве реализации, значение последнего элемента игнорируется и предполагается, что оно занимает оставшуюся вероятность, но на этом не следует полагаться. Для смещенной монеты, которая имеет вдвое большую вероятность выпадения одной стороны по сравнению с другой, выборку следует проводить так:

>>> rng.multinomial(100, [1.0 / 3, 2.0 / 3])  # RIGHT
array([38, 62])  # random

не так:

>>> rng.multinomial(100, [1.0, 2.0])  # WRONG
Traceback (most recent call last):
ValueError: pvals < 0, pvals > 1 or pvals contains NaNs

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

Spec-Zone.ru

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