Spec-Zone.ru › NumPy 2.0

numpy.random.RandomState.multinomial

метод

random.RandomState.multinomial(n, pvals, size=None)

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

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

Примечание

Новый код должен использовать метод multinomial объекта Generator; см. Быстрый старт.

Предупреждение

Эта функция по умолчанию использует тип данных C-long, который составляет 32 бита в Windows и в противном случае 64 бита на 64-битных платформах (и 32 бита на 32-битных). С NumPy 2.0 по умолчанию целые числа NumPy составляют 32 бита на 32-битных платформах и 64 бита на 64-битных платформах.

Параметры:
nint

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

pvalsпоследовательность чисел с плавающей точкой, длина p

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

sizeint или кортеж из целых чисел, необязательно

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

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

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

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

См. также

random.Generator.multinomial

который должен использоваться в новом коде.

Примеры

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

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

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

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

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

В первом случае мы бросили 3 раза 1, 4 раза 2 и т.д. Во втором — 2 раза 1, 4 раза 2 и т.д.

Нагруженная игральная кость с большей вероятностью упадет на 6:

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

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

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

а не так:

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

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

Spec-Zone.ru

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