Правила
Правило умножения вероятностей:
P(A \cdot B) = P(A) \cdot P(B)
Правило сложения вероятностей:
P(A+B)=P(A)+P(B)-P(A \cdot B)
при условии, что события совместны (т.е. могут произойти одновременно):
P(A \cdot B) \neq 0
иначе:
P(A+B)=P(A)+P(B)
если события попарно несовместны (например, выпадает либо орел, либо решка):
P(A \cdot B) = 0
Решение на Python:
# Вероятность события A
A = .25
# Вероятность события B
B = .5
# Умножение вероятностей
# (одновременно происходит A и B)
AB = .2
# Если событие попарно несовместно
# (не возможно, чтобы одновременно произошло A и B)
#AB = 0
# Сложение вероятностей
# (произойдет событие A или B)
P = A + B - AB
print(P)
0.55
Примеры на Python
Задача про самолет на Python:
# Задача про самолет
# P - вероятность попадания
# q - вероятность промазать
# s - количество снарядов
# kb - кабина пилота
# dv - двигатель
# pl - планер
P_kb, q_kb, s_kb = .1, 1-.1, 1
P_dv, q_dv, s_dv = .3, 1-.3, 2
P_pl, q_pl, s_pl = .6, 1-.6, 3
P_popadania = P_kb + P_dv + P_pl
print("Вероятность попадания в самолет =", P_popadania)
P_up = 1 - q_kb**3
print("Вероятность уничтожения пилота =", P_up)
P_cel = 3*P_dv*P_pl**2
print("Вероятность самолета уцелеть =", P_cel)
Вероятность попадания в самолет = 1.0
Вероятность уничтожения пилота = 0.2709999999999999
Вероятность самолета уцелеть = 0.32399999999999995
Задача про бензобаки на Python:
import math
from fractions import Fraction # Дроби
# Задача про бензобаки
# Вероятность попадания в бензобак
P = .1
# Количество выстрелов
n = 3
# Бензобаки
# A, B, C, D
b = [0, 0, 0, 0]
# Вероятность попадания в каждый бензобак
b[0] = b[1] = b[2] = b[3] = P/len(b)
print(b[0], "\t\t\t=", Fraction(b[0]).limit_denominator(1000))
# Вероятность попадания 3 пуль в 1 бензобак
b[0] = b[1] = b[2] = b[3] = P/len(b)**n
print(b[0], "\t\t=", Fraction(b[0]).limit_denominator(1000))
# Вероятность попадания 2 пуль в любой из бензобаков
b[0] = b[1] = b[2] = b[3] = len(b)*(1 - P/len(b))*(P/len(b))**(n-1)
print(b[0], "\t=", Fraction(b[0]).limit_denominator(1000))
# Вероятность попадания 3 пулями в разные бензобаки
b[0] = b[1] = b[2] = P/len(b)
b[3] = 0
Pb = b[0]*b[1]*b[2]*math.factorial(n) # b[0]**3*math.factorial(n)
print(Pb, "\t=", Fraction(Pb).limit_denominator(10000))
0.025 = 1/40
0.0015625 = 1/640
0.0024375000000000004 = 2/821
9.375000000000003e-05 = 1/10000
Задача про цистерны с бензином на Python:
# Задача про цистерны с бензином
# Вероятность возгорания цистерны
# при попадании пули
P = .1
# Количество снайперских выстрелов
n = 3
# Количество станций (количество атак)
# с 3 цистернами
ns = 7
# Все выстрелы в центральную цистерну
P1 = 1 - (1-P)**n
q1 = 1 - P1
print(P1, "\t- Все выстрелы в центральную цистерну")
# По 1 пуле в каждую цистерну
P3 = P**n
print(P3, "\t- По 1 пуле в каждую цистерну")
# 2 пули в 1 цистерну, 1 в другую цистерну
P21 = P**(n-1)*(1 - P)
print(P21, "\t- 2 пули в 1 цистерну, 1 в другую цистерну")
# 3 пули в центральную цистерну
P2 = (1 - P)*P*(1 - P)
print(P2,"\t- 3 пули в центральную цистерну\n")
# Вероятность успеха одновременных
# атак на 7 станций,
# на каждой 3 цистерны
P7 = (1 - P1)**ns
print(P7, "\t- Вероятность успеха одновременных атак на 7 станций")
# Сколько будет успешных атак
PY = P1*ns
print(PY, "\t- Количество успешных атак")
# Мера разброса результата атак
# (средне квадратичное отклонение)
sigma = (ns*P1*q1)**.5
print(sigma, "\t- Мера разброса результата атак (средне квадратичное отклонение)\n")
Pmax = PY + sigma
Pmin = PY - sigma
print("Разброс успешных атак от", Pmin, "до", Pmax)
0.2709999999999999 - Все выстрелы в центральную цистерну
0.0010000000000000002 - По 1 пуле в каждую цистерну
0.009000000000000003 - 2 пули в 1 цистерну, 1 в другую цистерну
0.08100000000000002 - 3 пули в центральную цистерну
0.10941898913151246 - Вероятность успеха одновременных атак на 7 станций
1.8969999999999994 - Количество успешных атак
1.1759732139806585 - Мера разброса результата атак (средне квадратичное отклонение)
Разброс успешных атак от 0.7210267860193409 до 3.072973213980658