Распределение. Количество способов выбрать k успехов, вероятность любого количества успехов

Количество (с) способов выбрать k успехов из n повторений эксперимента (например k дней из n дней):
from math import factorial
c = factorial(n)/(factorial(k)*factorial(n-k))

Например, количество способов выбрать 2 дня из 14 дней:
c = factorial(14)/(factorial(2)*factorial(12))
Вероятность k количества успехов из n экспериментов:

I. При биномиальном распределении:
• n попыток - конечное фиксированное число;
• у каждой возможно два исхода;
• попытки независимы между собой;
• вероятность успеха p одинаковая для всех n попыток.
1. Cимметричное биномиальное распределение -
p успеха =p неудачи(50%)
from matplotlib import pyplot as plt
from math import factorial
n = real number
p = 0.5

distr = []

for k in range(0,n+1):
--------choose = factorial(n)/(factorial(k) * factorial(n-k))
--------prob = choose * p**k * (1-p)**(n-k)
--------distr.append(prob)

plt.bar(range(0,n+1), distr)

или подробнее

n_tries = 6
# сколько есть попыток, повторений?
each_failure_prob = 0.1
# вероятность неудачи в каждой из попыток = 10%

distr = []
#создание переменной, в которой буду хранить значения распределения

for k in range(0,n_tries+1):
--------#количество способов достичь "к" успехов из n_tries попыток
--------choose = factorial(n_tries)/(factorial(k) * factorial(n_tries-k))
--------# вероятность что 0 попыток будут удачными, 1 попытка будет удачной, 2 попытки будут удачными и так до общего числа попыток n_tries
--------prob = choose * each_failure_prob**k * (1-each_failure_prob)**(n_tries-k)
--------distr.append(prob)

plt.bar(range(0,n_tries+1), distr)

2. Скошенное биномиальное распределение
а)вправо (вероятность успеха маленькая)
б)влево (вероятность успеха большая)

*
"с" от "choose"
"p" от "probability"

II. Нормальное распределение.
Центральная предельная теорема. Множество независимых случайных величин вместе имеют нормальное распределение.
- служит для описания распределения непрерывных случайных величин;
- возможно описание дискретных случайных величины с аппроксимацией.

from scipy import stats as st
norm.ppf
norm.cdf

Значение переменной для известной вероятности интервала слева от этого значения:
norm.ppf

Вероятность для известного значения:
norm.cdf

1. Пример нахождения значение переменной для известной вероятности:

from scipy import stats as st
mu = realnumber
#среднее значение распределения
sigma = realnumber2
#стандартное отклонение

prob = realnumber3
#вероятность, которой нужно добиться

distr = st.norm(mu, sigma)

number_of_smth = distr.ppf(1-prob)
#cколько нужно единиц, чтобы достичь результата с указанной вероятностью вероятностью

2. Пример нахождения вероятности для известного значения
Вероятность получить значение x = 1000 для явления с нормальным распределением с математическим ожиданием 1000 и стандартным отклонением 100:
from scipy import stats as st
distr = st.norm(1000, 100)
x = 1000
result = distr.cdf(x)

norm.cdf выдаёт вероятность получить значение, которое меньше и равно заданному, поэтому
значение больше или равное заданному = 1 - distr.cdf(x)

from scipy import stats as st
mu = realnumber
#среднее значение распределения
sigma = realnumber2
#стандартное отклонение

biggerlimit_smth_should_be_more = realnumber3
#граница, если мы хотим найти вероятность, что значение будет больше

mini_limit_smth_should_be_less = realnumber4
#граница, если мы хотим найти вероятность, что значение будет меньше

distr = st.norm(mu, sigma)

p_more_than_limit = 1 - distr.cdf(biggerlimit_smth_should_be_more)
# посчитайте вероятность, что значение будет больше, чем указанная граница

p_less_than_limit = distr.cdf(mini_limit_smth_should_be_less)
# вероятность, что значение будет меньше, чем указанная граница

*
"norm" от normal continuous random variable (нормальное распределение непрерывной случайной величины)
"ppf" от percent point function (функция процентных значений);
"cdf" от cumulative distribution function (кумулятивная функция распределения).

Команды: