Метод hypergeometric
Метод hypergeometric класса Generator генерирует
случайные числа из гипергеометрического распределения.
Это распределение описывает вероятность получить определённое
количество успехов в выборке без возвращения из конечной
популяции, содержащей заданное число объектов двух типов.
Синтаксис
generator.hypergeometric(ngood, nbad, nsample, size=None)
Параметры метода:
-
ngood- количество объектов первого типа (успехов) в популяции. Должно быть неотрицательным целым числом. -
nbad- количество объектов второго типа (неудач) в популяции. Должно быть неотрицательным целым числом. -
nsample- размер выборки без возвращения. Должен быть неотрицательным целым числом и не превышать общее количество объектовngood + nbad. -
size- форма возвращаемого массива (необязательный параметр). Если не указан, возвращается одно случайное число.
Пример
Сгенерируем одно случайное число из гипергеометрического распределения с 10 успешными элементами, 5 неудачными и выборкой из 7 элементов:
import numpy as np
rng = np.random.default_rng(0)
res = rng.hypergeometric(10, 5, 7)
print(res)
Результат выполнения кода:
5
Пример
Сгенерируем массив из 5 случайных чисел из гипергеометрического распределения с 20 успешными элементами, 10 неудачными и выборкой из 15 элементов:
import numpy as np
rng = np.random.default_rng(0)
arr = rng.hypergeometric(20, 10, 15, size=5)
print(arr)
Результат выполнения кода:
[11 11 8 10 10]
Пример
Создадим двумерный массив случайных чисел из гипергеометрического распределения с 30 успешными элементами, 20 неудачными и выборкой из 10 элементов:
import numpy as np
rng = np.random.default_rng(0)
arr = rng.hypergeometric(30, 20, 10, size=(2, 3))
print(arr)
Результат выполнения кода:
[[6 6 4]
[7 6 5]]
Пример
С помощью метода hypergeometric можно вычислить
вероятность получить ровно 3 успеха при выборке 5 элементов
из популяции с 10 успешными и 7 неудачными объектами.
Для этого сгенерируем большое количество выборок и подсчитаем
долю тех, где число успехов равно 3:
import numpy as np
rng = np.random.default_rng(0)
samples = rng.hypergeometric(10, 7, 5, size=100000)
probability = np.mean(samples == 3)
print(probability)
Результат выполнения кода:
0.32792
Смотрите также
-
класс
Generator,
который используется для создания генераторов случайных чисел -
метод
binomial,
который генерирует числа из биномиального распределения -
метод
random,
который генерирует числа из равномерного распределения на интервале [0, 1) -
метод
choice,
который генерирует случайную выборку из заданного массива