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 : последовательность чисел с плавающей точкой, длина p
Вероятности каждого из
pразличных исходов. Они должны суммироваться до 1 (однако последний элемент всегда предполагается, что он учитывает оставшуюся вероятность, еслиsum(pvals[:-1]) <= 1)).size : int или кортеж из целых чисел, необязательно
Форма выходных данных. Если заданная форма, например,
(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])
© 2008–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.11.0/reference/generated/numpy.random.RandomState.multinomial.html