numpy.random.RandomState.multinomial
-
RandomState.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.RandomState.multinomial.html