numpy.random.multinomial
-
numpy.random.multinomial(n, pvals, size=None) -
Выборка из многочленного распределения.
Многочленное распределение является многомерной обобщением биномиального распределения. Рассмотрим эксперимент с одним из
pвозможных исходов. Примером такого эксперимента является бросание игральной кости, где результат может быть от 1 до 6. Каждый образец, взятый из распределения, представляетnтаких экспериментов. Его значения,X_i = [X_0, X_1, ..., X_p], представляют собой количество раз, когда результат былi.Примечание
Новый код должен использовать метод
multinomialэкземпляраdefault_rng()вместо; см.random-quick-start.- Параметры
-
-
nint -
Количество экспериментов.
-
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-мерное значение, взятое из распределения.
-
См. также
-
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 единицы, 4 двойки и т.д. Во втором - 2 единицы, 4 двойки и т.д.
Нагруженная игральная кость чаще выпадает на 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–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.19/reference/random/generated/numpy.random.multinomial.html