numpy.random.multinomial
-
numpy.random.multinomial(n, pvals, size=None) -
Выборка из многочленного распределения.
Многочленное распределение — это многомерное обобщение биномиального распределения. Рассмотрим эксперимент с одним из
pвозможных исходов. Примером такого эксперимента является бросание игральной кости, где результат может быть от 1 до 6. Каждый образец, взятый из распределения, представляетnтаких экспериментов. Его значения,X_i = [X_0, X_1, ..., X_p], представляют количество раз, когда результат былi.Параметры: -
n : int -
Количество экспериментов.
-
pvals : sequence of floats, length p -
Вероятности каждого из
pразличных исходов. Они должны суммироваться до 1 (однако, последний элемент всегда предполагается учитывать оставшуюся вероятность, еслиsum(pvals[:-1]) <= 1)). -
size : int or tuple of ints, optional -
Форма выходных данных. Если заданная форма, например,
(m, n, k), тоm * n * kвыборок будут взяты. По умолчанию None, в этом случае возвращается одно значение.
Возвращает: -
out : ndarray -
Выбранные образцы, с формой size, если это было предоставлено. В противном случае форма —
(N,).Другими словами, каждый элемент
out[i,j,...,:]представляет собой N-мерное значение, выбранное из распределения.
Примеры
Бросаем игральную кость 20 раз:
>>> np.random.multinomial(20, [1/6.]*6, size=1) array([[4, 1, 7, 5, 2, 1]])
Она 4 раза упала на 1, 1 раз на 2 и т.д.
Теперь бросим кость 20 раз, и ещё 20 раз:
>>> np.random.multinomial(20, [1/6.]*6, size=2) array([[3, 4, 3, 3, 4, 3], [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])
Ввод вероятностей должен быть нормализованным. В качестве реализации, значение последнего элемента игнорируется и предполагается, что оно занимает оставшуюся вероятностную массу, но на это нельзя полагаться. Для взвешенной монеты, которая имеет вдвое больше веса на одной стороне, чем на другой, выборка должна быть такой:
>>> np.random.multinomial(100, [1.0 / 3, 2.0 / 3]) # RIGHT array([38, 62])
а не такой:
>>> np.random.multinomial(100, [1.0, 2.0]) # WRONG array([100, 0])
-
© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.15.4/reference/generated/numpy.random.multinomial.html