numpy.random.RandomState.multinomial#

метод

random.RandomState.мультиномиальное(n, pvals, размер=None)#

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

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

Примечание

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

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

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

Параметры:
nint

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

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

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

размерint или кортеж ints, опционально

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

Возвращает:
выходndarray

Нарисованные выборки, формы размер, если оно было предоставлено. Если нет, форма будет (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, один раз на 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