"""Урок 2"""

from math import factorial


def combinations(total_n, quantity):
    return int(factorial(total_n) / (
                factorial(quantity) * factorial(total_n - quantity)))


def bernulli(total_n, quantity, probability):
    return combinations(total_n, quantity) * pow(probability, quantity) * pow(
        1 - probability, total_n - quantity)


def puasson(lambda_m, m):
    return pow(2.72, -lambda_m) * pow(lambda_m, m) / factorial(m)


# 1. Вероятность того, что стрелок попадет в мишень, выстрелив один раз,
# равна 0.8. Стрелок выстрелил 100 раз. Найдите вероятность того, что стрелок
# попадет в цель ровно 85 раз.
# Решение:
# Для расчета используем формулу Бернулли
p_shots = bernulli(100, 85, 0.8)
print(f'Ответ 1: {p_shots} или {p_shots:.2%}')
# Ответ 1: 0.048061793700746355 или 4.81%

# 2. Вероятность того, что лампочка перегорит в течение первого дня
# эксплуатации, равна 0.0004. В жилом комплексе после ремонта в один день
# включили 5000 новых лампочек.
# а)Какова вероятность, что ни одна из них не перегорит в первый день?
# б)Какова вероятность, что перегорят ровно две?
# Решение:
# Для расчета используем формулу Пуассона
lambda_one = 5000 * 0.0004
p_k0 = puasson(lambda_one, 0)
p_k2 = puasson(lambda_one, 2)
print(f'Р(лампы не сгорят)={p_k0} или {p_k0:.2%}\n'
      f'Р(перегорят 2 лампы)={p_k2} или {p_k2:.2%}')
# Р(лампы не сгорят)=0.13516435986159167 или 13.52%
# Р(перегорят 2 лампы)=0.27032871972318334 или 27.03%

# 3. Монету подбросили 144 раза.
# Какова вероятность, что орел выпадет ровно 70 раз?
# Решение:
# Для расчета используем формулу Бернулли
p_heads = bernulli(144, 70, 0.5)
print(f'Ответ 3: {p_heads} или {p_heads:.2%}')
# Ответ 3: 0.06281178035144776 или 6.28%

# 4. В первом ящике 1() находится 10 мячей, из которых 7 - белые, 3 - черные.
# Во втором ящике 2() - 11 мячей, из которых 9 белых и 2 черных.
# Из каждого ящика вытаскивают случайным образом по два мяча.
# а) Какова вероятность того, что все мячи белые?
# б) Какова вероятность того, что ровно два мяча белые?
# в) Какова вероятность того, что хотя бы один мяч белый?
# Решение:
# а) благопритные исходы: 1(ББ) и 2(ББ)
first = 7 / 10 * 6 / 9
second = 9 / 11 * 8 / 10
p_balls = first * second
print(f'Ответ 4а: {p_balls} или {p_balls:.2%}')
# Ответ 4а: 0.30545454545454537 или 30.55%
# б) благопритные исходы: 1(БЧ) + 2(БЧ) или 1(ЧЧ) + 2(ББ) или 1(ББ) + 2(ЧЧ)
p_balls = (7 / 10 * 3 / 9 + 3 / 10 * 7 / 9) * (9 / 11 * 2 / 10 + 2 / 11 * 9 / 10) \
          + 3 / 10 * 2 / 9 * 9 / 11 * 8 / 10 + 7 / 10 * 6 / 9 * 2 / 11 * 1 / 10
print(f'Ответ 4б: {p_balls} или {p_balls:.2%}')
# Ответ 4б: 0.20484848484848484 или 20.48%
# в) Р(благоприятный исход) =  1 - P(неблагопритный исход: взяли 1(ЧЧ) и 2(ЧЧ))
first = 3 / 10 * 2 / 9
second = 2 / 11 * 1 / 10
p_balls = 1 - first * second
print(f'Ответ 4в: {p_balls} или {p_balls:.2%}')
# Ответ 4в: 0.9987878787878788 или 99.88%

381bcc761170cf421621bc348df8fa70aa163536
<mask token>


def combinations(total_n, quantity):
    return int(factorial(total_n) / (factorial(quantity) * factorial(
        total_n - quantity)))


def bernulli(total_n, quantity, probability):
    return combinations(total_n, quantity) * pow(probability, quantity) * pow(
        1 - probability, total_n - quantity)


def puasson(lambda_m, m):
    return pow(2.72, -lambda_m) * pow(lambda_m, m) / factorial(m)


<mask token>

<mask token>


def combinations(total_n, quantity):
    return int(factorial(total_n) / (factorial(quantity) * factorial(
        total_n - quantity)))


def bernulli(total_n, quantity, probability):
    return combinations(total_n, quantity) * pow(probability, quantity) * pow(
        1 - probability, total_n - quantity)


def puasson(lambda_m, m):
    return pow(2.72, -lambda_m) * pow(lambda_m, m) / factorial(m)


<mask token>
print(f'Ответ 1: {p_shots} или {p_shots:.2%}')
<mask token>
print(
    f"""Р(лампы не сгорят)={p_k0} или {p_k0:.2%}
Р(перегорят 2 лампы)={p_k2} или {p_k2:.2%}"""
    )
<mask token>
print(f'Ответ 3: {p_heads} или {p_heads:.2%}')
<mask token>
print(f'Ответ 4а: {p_balls} или {p_balls:.2%}')
<mask token>
print(f'Ответ 4б: {p_balls} или {p_balls:.2%}')
<mask token>
print(f'Ответ 4в: {p_balls} или {p_balls:.2%}')

<mask token>


def combinations(total_n, quantity):
    return int(factorial(total_n) / (factorial(quantity) * factorial(
        total_n - quantity)))


def bernulli(total_n, quantity, probability):
    return combinations(total_n, quantity) * pow(probability, quantity) * pow(
        1 - probability, total_n - quantity)


def puasson(lambda_m, m):
    return pow(2.72, -lambda_m) * pow(lambda_m, m) / factorial(m)


p_shots = bernulli(100, 85, 0.8)
print(f'Ответ 1: {p_shots} или {p_shots:.2%}')
lambda_one = 5000 * 0.0004
p_k0 = puasson(lambda_one, 0)
p_k2 = puasson(lambda_one, 2)
print(
    f"""Р(лампы не сгорят)={p_k0} или {p_k0:.2%}
Р(перегорят 2 лампы)={p_k2} или {p_k2:.2%}"""
    )
p_heads = bernulli(144, 70, 0.5)
print(f'Ответ 3: {p_heads} или {p_heads:.2%}')
first = 7 / 10 * 6 / 9
second = 9 / 11 * 8 / 10
p_balls = first * second
print(f'Ответ 4а: {p_balls} или {p_balls:.2%}')
p_balls = (7 / 10 * 3 / 9 + 3 / 10 * 7 / 9) * (9 / 11 * 2 / 10 + 2 / 11 * 9 /
    10) + 3 / 10 * 2 / 9 * 9 / 11 * 8 / 10 + 7 / 10 * 6 / 9 * 2 / 11 * 1 / 10
print(f'Ответ 4б: {p_balls} или {p_balls:.2%}')
first = 3 / 10 * 2 / 9
second = 2 / 11 * 1 / 10
p_balls = 1 - first * second
print(f'Ответ 4в: {p_balls} или {p_balls:.2%}')

<mask token>
from math import factorial


def combinations(total_n, quantity):
    return int(factorial(total_n) / (factorial(quantity) * factorial(
        total_n - quantity)))


def bernulli(total_n, quantity, probability):
    return combinations(total_n, quantity) * pow(probability, quantity) * pow(
        1 - probability, total_n - quantity)


def puasson(lambda_m, m):
    return pow(2.72, -lambda_m) * pow(lambda_m, m) / factorial(m)


p_shots = bernulli(100, 85, 0.8)
print(f'Ответ 1: {p_shots} или {p_shots:.2%}')
lambda_one = 5000 * 0.0004
p_k0 = puasson(lambda_one, 0)
p_k2 = puasson(lambda_one, 2)
print(
    f"""Р(лампы не сгорят)={p_k0} или {p_k0:.2%}
Р(перегорят 2 лампы)={p_k2} или {p_k2:.2%}"""
    )
p_heads = bernulli(144, 70, 0.5)
print(f'Ответ 3: {p_heads} или {p_heads:.2%}')
first = 7 / 10 * 6 / 9
second = 9 / 11 * 8 / 10
p_balls = first * second
print(f'Ответ 4а: {p_balls} или {p_balls:.2%}')
p_balls = (7 / 10 * 3 / 9 + 3 / 10 * 7 / 9) * (9 / 11 * 2 / 10 + 2 / 11 * 9 /
    10) + 3 / 10 * 2 / 9 * 9 / 11 * 8 / 10 + 7 / 10 * 6 / 9 * 2 / 11 * 1 / 10
print(f'Ответ 4б: {p_balls} или {p_balls:.2%}')
first = 3 / 10 * 2 / 9
second = 2 / 11 * 1 / 10
p_balls = 1 - first * second
print(f'Ответ 4в: {p_balls} или {p_balls:.2%}')

"""Урок 2"""

from math import factorial


def combinations(total_n, quantity):
    return int(factorial(total_n) / (
                factorial(quantity) * factorial(total_n - quantity)))


def bernulli(total_n, quantity, probability):
    return combinations(total_n, quantity) * pow(probability, quantity) * pow(
        1 - probability, total_n - quantity)


def puasson(lambda_m, m):
    return pow(2.72, -lambda_m) * pow(lambda_m, m) / factorial(m)


# 1. Вероятность того, что стрелок попадет в мишень, выстрелив один раз,
# равна 0.8. Стрелок выстрелил 100 раз. Найдите вероятность того, что стрелок
# попадет в цель ровно 85 раз.
# Решение:
# Для расчета используем формулу Бернулли
p_shots = bernulli(100, 85, 0.8)
print(f'Ответ 1: {p_shots} или {p_shots:.2%}')
# Ответ 1: 0.048061793700746355 или 4.81%

# 2. Вероятность того, что лампочка перегорит в течение первого дня
# эксплуатации, равна 0.0004. В жилом комплексе после ремонта в один день
# включили 5000 новых лампочек.
# а)Какова вероятность, что ни одна из них не перегорит в первый день?
# б)Какова вероятность, что перегорят ровно две?
# Решение:
# Для расчета используем формулу Пуассона
lambda_one = 5000 * 0.0004
p_k0 = puasson(lambda_one, 0)
p_k2 = puasson(lambda_one, 2)
print(f'Р(лампы не сгорят)={p_k0} или {p_k0:.2%}\n'
      f'Р(перегорят 2 лампы)={p_k2} или {p_k2:.2%}')
# Р(лампы не сгорят)=0.13516435986159167 или 13.52%
# Р(перегорят 2 лампы)=0.27032871972318334 или 27.03%

# 3. Монету подбросили 144 раза.
# Какова вероятность, что орел выпадет ровно 70 раз?
# Решение:
# Для расчета используем формулу Бернулли
p_heads = bernulli(144, 70, 0.5)
print(f'Ответ 3: {p_heads} или {p_heads:.2%}')
# Ответ 3: 0.06281178035144776 или 6.28%

# 4. В первом ящике 1() находится 10 мячей, из которых 7 - белые, 3 - черные.
# Во втором ящике 2() - 11 мячей, из которых 9 белых и 2 черных.
# Из каждого ящика вытаскивают случайным образом по два мяча.
# а) Какова вероятность того, что все мячи белые?
# б) Какова вероятность того, что ровно два мяча белые?
# в) Какова вероятность того, что хотя бы один мяч белый?
# Решение:
# а) благопритные исходы: 1(ББ) и 2(ББ)
first = 7 / 10 * 6 / 9
second = 9 / 11 * 8 / 10
p_balls = first * second
print(f'Ответ 4а: {p_balls} или {p_balls:.2%}')
# Ответ 4а: 0.30545454545454537 или 30.55%
# б) благопритные исходы: 1(БЧ) + 2(БЧ) или 1(ЧЧ) + 2(ББ) или 1(ББ) + 2(ЧЧ)
p_balls = (7 / 10 * 3 / 9 + 3 / 10 * 7 / 9) * (9 / 11 * 2 / 10 + 2 / 11 * 9 / 10) \
          + 3 / 10 * 2 / 9 * 9 / 11 * 8 / 10 + 7 / 10 * 6 / 9 * 2 / 11 * 1 / 10
print(f'Ответ 4б: {p_balls} или {p_balls:.2%}')
# Ответ 4б: 0.20484848484848484 или 20.48%
# в) Р(благоприятный исход) =  1 - P(неблагопритный исход: взяли 1(ЧЧ) и 2(ЧЧ))
first = 3 / 10 * 2 / 9
second = 2 / 11 * 1 / 10
p_balls = 1 - first * second
print(f'Ответ 4в: {p_balls} или {p_balls:.2%}')
# Ответ 4в: 0.9987878787878788 или 99.88%
