Метод binomial
Метод binomial класса Generator генерирует случайные числа,
распределенные по биномиальному закону. Биномиальное распределение описывает
количество успехов в серии из независимых испытаний, каждое из которых
имеет вероятность успеха . Первым параметром метод принимает количество
испытаний (целое неотрицательное число), вторым параметром - вероятность
успеха (число в диапазоне от 0 до 1). Третьим параметром можно задать
размер выходного массива.
Синтаксис
generator.binomial(n, p, size=None)
Пример
Давайте сгенерируем одно случайное число из биномиального распределения с 10 испытаниями и вероятностью успеха 0.5:
import numpy as np
rng = np.random.default_rng(0)
res = rng.binomial(10, 0.5)
print(res)
Результат выполнения кода:
6
Пример
Давайте сгенерируем массив из 5 случайных чисел, каждое из которых представляет количество успехов в 20 испытаниях с вероятностью успеха 0.3:
import numpy as np
rng = np.random.default_rng(0)
arr = rng.binomial(20, 0.3, size=5)
print(arr)
Результат выполнения кода:
[8 6 4 5 8]
Пример
Давайте создадим двумерный массив (3 строки по 4 элемента) случайных чисел, распределенных биномиально с 15 испытаниями и вероятностью успеха 0.7:
import numpy as np
rng = np.random.default_rng(0)
arr = rng.binomial(15, 0.7, size=(3, 4))
print(arr)
Результат выполнения кода:
[[10 12 11 11]
[ 9 10 10 9]
[12 11 9 11]]
Пример
Давайте смоделируем серию из 1000 испытаний и построим гистограмму полученных значений для наглядного представления распределения:
import numpy as np
import matplotlib.pyplot as plt
rng = np.random.default_rng(0)
arr = rng.binomial(50, 0.2, size=1000)
plt.hist(arr, bins=20, edgecolor='black')
plt.title('Binomial distribution (n=50, p=0.2)')
plt.xlabel('Number of successes')
plt.ylabel('Frequency')
plt.show()
Пример
Давайте вычислим среднее значение и дисперсию для выборки из биномиального
распределения и сравним с теоретическими значениями (теоретическое среднее
равно * , дисперсия равна * * (1 - )):
import numpy as np
rng = np.random.default_rng(0)
n = 30
p = 0.4
arr = rng.binomial(n, p, size=5000)
mean = np.mean(arr)
var = np.var(arr)
theoretical_mean = n * p
theoretical_var = n * p * (1 - p)
print(f"Sample mean: {mean:.3f}")
print(f"Sample variance: {var:.3f}")
print(f"Theoretical mean: {theoretical_mean}")
print(f"Theoretical variance: {theoretical_var:.3f}")
Результат выполнения кода:
"Sample mean: 12.026"
"Sample variance: 7.350"
"Theoretical mean: 12.0"
"Theoretical variance: 7.200"
Смотрите также
-
класс
Generator,
который предоставляет методы для генерации случайных чисел -
метод
poisson,
который генерирует числа из распределения Пуассона -
метод
geometric,
который генерирует числа из геометрического распределения -
метод
random,
который генерирует числа из равномерного распределения на отрезке [0, 1)