Правила сложения и умножения, независимость
Зная вероятности простых событий, можно вычислить вероятность их комбинаций — для этого есть всего два правила.
Независимые события — те, у которых исход одного никак не влияет на исход другого (два разных броска монеты). Несовместные — не могут произойти одновременно (на одной кости выпало и 2, и 5).
Правило умножения: «И»
Вероятность того, что произойдут оба независимых события, равна произведению их вероятностей. Орёл на первой монете И орёл на второй: 1/2 · 1/2 = 1/4.
from fractions import Fraction
p_heads = Fraction(1, 2)
# Два независимых броска: орёл И орёл
p_both = p_heads * p_heads
print("P(орёл и орёл):", p_both)
# Три шестёрки подряд на кости
p_six = Fraction(1, 6)
print("P(три шестёрки подряд):", p_six ** 3)
Вывод:
P(орёл и орёл): 1/4 P(три шестёрки подряд): 1/216
Важно: правило P(A и B) = P(A)·P(B) работает только для независимых событий. Если события связаны, формула другая — об этом следующий урок про условную вероятность.
Правило сложения: «ИЛИ»
Вероятность того, что произойдёт хотя бы одно из двух событий, в общем случае: P(A) + P(B) − P(A и B). Вычитаем пересечение, чтобы не посчитать его дважды.
from fractions import Fraction
# Одна кость. A = чётное {2,4,6}; B = больше 3 {4,5,6}
p_a = Fraction(3, 6) # чётное
p_b = Fraction(3, 6) # больше 3
p_both = Fraction(2, 6) # пересечение {4,6}
p_or = p_a + p_b - p_both
print("P(чётное или больше 3):", p_or)
# Проверим прямым подсчётом исходов
space = [1, 2, 3, 4, 5, 6]
event = [x for x in space if x % 2 == 0 or x > 3] # {2,4,5,6}
print("Прямой подсчёт:", Fraction(len(event), len(space)), "->", sorted(set(event)))
Вывод:
P(чётное или больше 3): 2/3 Прямой подсчёт: 2/3 -> [2, 4, 5, 6]
Обе дороги ведут к 2/3. Если бы мы забыли вычесть пересечение {4, 6}, получили бы завышенные 1.
Несовместные события: «ИЛИ» упрощается
Если события не могут произойти одновременно (пересечение пустое, P(A и B) = 0), правило сложения упрощается до простого сложения: P(A или B) = P(A) + P(B). На кости «выпало 1» и «выпало 6» несовместны.
from fractions import Fraction
# Несовместные: выпала 1 ИЛИ выпала 6 (одновременно невозможно)
p_one = Fraction(1, 6)
p_six = Fraction(1, 6)
print("P(1 или 6):", p_one + p_six)
Вывод:
P(1 или 6): 1/3
Проверим независимость симуляцией
Перемножение вероятностей для независимых событий — не магия, а наблюдаемый факт. Смоделируем 100000 пар бросков монеты и посчитаем долю «орёл-орёл».
import random
random.seed(7)
N = 100000
both_heads = 0
for _ in range(N):
c1 = random.choice("ОР") # О = орёл, Р = решка
c2 = random.choice("ОР")
if c1 == "О" and c2 == "О":
both_heads += 1
print("Доля 'орёл-орёл':", both_heads / N)
print("Теория (1/4):", 0.25)
Вывод:
Доля 'орёл-орёл': 0.25206 Теория (1/4): 0.25
Симуляция дала 0.25206 — почти ровно теоретические 0.25. Правило умножения подтвердилось экспериментом.
Памятка
| Слово в задаче | Правило |
| «и», «оба», «подряд» | умножение: P(A)·P(B) (если независимы) |
| «или», «хотя бы одно» | сложение: P(A)+P(B)−P(A и B) |
| несовместные «или» | P(A)+P(B) |
Итог
- Для независимых событий P(A и B) = P(A)·P(B) (умножение).
- Для «или»: P(A или B) = P(A) + P(B) − P(A и B) (вычитаем пересечение).
- Для несовместных событий пересечение нулевое, и «или» — просто сумма.
- Симуляция подтверждает правило умножения: доля «орёл-орёл» ≈ 1/4.