numpy.random.multinomial
- random.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 и т. д.
Игральная кость, которая чаще падает на шестерку:
>>> 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.multinomial.html