РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
489 of 541 menu

Метод 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)
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.