1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12

# теория · шаг 1 из 12

Вероятность: исходы, события и два правила счёта

Коротко

Вероятность события - доля исходов опыта, в которых оно случилось, если все исходы равновозможны. Два кубика дают 36 исходов; сумма 7 выпадает в шести из них, вероятность 6/36. Складывать вероятности можно только у событий, которые не случаются вместе: «хотя бы одна шестёрка» - это 11/36, а не 12/36. Перемножать - только у независимых. Когда неизвестно ни то, ни другое, остаётся оценка сверху: вероятность того, что случится хотя бы одно из событий, не больше суммы их вероятностей. На этих трёх правилах стоит весь раздел.

Если ты выпишешь пространство исходов для двух кубиков, отличишь несовместные события от независимых и оценишь сверху вероятность «хотя бы один из двадцати серверов упал» - листай до «Теперь сам».

Как думаешь, какова вероятность хотя бы одной шестёрки

Бросают два кубика. Шестёрка на одном кубике выпадает с вероятностью 1/6. Кубиков два.

Прежде чем читать дальше, ответь себе: вероятность, что шестёрка выпадет хотя бы на одном, равна 1/6 + 1/6 = 1/3? Тогда на шести кубиках она была бы 6/6 - шестёрка обязана выпасть, а на семи вероятность стала бы больше единицы. Значит, сложение где-то считает лишнее. Верный ответ - 11/36, и ниже видно, какой исход посчитан дважды.

На что это похоже

Опыт - это вытягивание одной карточки из коробки. На каждой карточке записан один возможный результат: «на первом кубике 2, на втором 5». Карточек 36, все одинаковые на ощупь.

Событие - это не карточка, а пометка маркером: «все карточки, где сумма равна семи». Вероятность события - доля помеченных карточек в коробке. Два события - две пометки разного цвета, и одна карточка может нести обе. Вся путаница с вероятностями возникает, когда считают пометки, забыв, что они сидят на одних и тех же карточках.

Механизм: пространство исходов и события в нём

Исход - один полностью описанный результат опыта. Пространство исходов - множество всех исходов. Для двух кубиков это 36 пар (a, b).

Событие - любое множество исходов. «Сумма равна 7» - шесть пар: (1,6), (2,5), (3,4), (4,3), (5,2), (6,1).

Вероятность события A, запись P(A), при равновозможных исходах - число исходов в A, делённое на число всех исходов. Отсюда сразу: вероятность лежит от 0 до 1, вероятность всего пространства равна 1, а вероятность того, что A не случилось, равна 1 − P(A).

Пространство двух кубиков, шестёрки отмечены:

        b=1  b=2  b=3  b=4  b=5  b=6
a=1      .    .    .    .    .    #
a=2      .    .    .    .    .    #
a=3      .    .    .    .    .    #
a=4      .    .    .    .    .    #
a=5      .    .    .    .    .    #
a=6      #    #    #    #    #    #      <- угловая клетка общая

«Шестёрка на первом» - нижняя строка, 6 клеток. «Шестёрка на втором» - правый столбец, 6 клеток. Вместе они закрывают 11 клеток, а не 12: клетка (6,6) лежит и в строке, и в столбце. Сложение 1/6 + 1/6 посчитало её дважды.

Почему для несовместных событий стоит именно сложение: у них нет общих клеток, и число клеток объединения равно сумме. Доля от целого складывается вместе с числом клеток.

Почему для независимых стоит умножение. События независимы, если знание об одном не меняет вероятности другого. Первый кубик показывает шестёрку в 1/6 всех клеток - это одна строка. Внутри этой строки второй кубик показывает шестёрку снова в 1/6 клеток. Доля от доли - это произведение: 1/6 · 1/6 = 1/36. Так P(A и B) = P(A) · P(B) и есть определение независимости, записанное формулой.

Условная вероятность P(A | B) - вероятность A, если известно, что B случилось. Коробку уменьшили: в ней остались только карточки события B, и считается доля A среди них: P(A | B) = P(A и B) / P(B). Формула имеет смысл, когда B вообще возможно: P(B) > 0.

Правило

Вероятность события при равновозможных исходах - доля исходов, в которых оно случилось. Для любых двух событий P(A или B) = P(A) + P(B) − P(A и B); для несовместных последнее слагаемое равно нулю. Для независимых P(A и B) = P(A) · P(B). Для любых событий, без всяких условий: P(A₁ или A₂ или … или Aₙ) ≤ P(A₁) + P(A₂) + … + P(Aₙ) - оценка объединения. Вероятность «хотя бы один раз» удобнее считать через противоположное событие: 1 − P(ни разу).

Разбор: два кубика перебором и бросками

Перебор всех 36 исходов - точный счёт, без случайности:

vsego = 0
sem = 0
shest = 0
obe = 0
for a in range(1, 7):
    for b in range(1, 7):
        vsego = vsego + 1
        if a + b == 7:
            sem = sem + 1
        if a == 6 or b == 6:
            shest = shest + 1
        if a == 6 and b == 6:
            obe = obe + 1
print(vsego, sem, shest, obe)
36 6 11 1

Сумма 7 - 6/36, хотя бы одна шестёрка - 11/36 ≈ 0,3056, две шестёрки - 1/36. Формула объединения сходится: 6/36 + 6/36 − 1/36 = 11/36. Через противоположное событие то же число получается короче: ни одной шестёрки - это 5/6 · 5/6 = 25/36 (кубики независимы), значит хотя бы одна - 1 − 25/36 = 11/36.

Теперь тот же вопрос задан настоящим броскам. В этом разделе у тренажёра появился модуль random: random.randint(1, 6) возвращает случайное целое от 1 до 6 включительно, а random.seed(2026) задаёт зерно - число, от которого генератор начинает отсчёт. С одним и тем же зерном программа каждый раз выдаёт одни и те же числа, и это те же числа, что напечатает настоящий Python. Без зерна каждый запуск даёт свои.

import random

random.seed(2026)
broskov = 6000
est_shest = 0
for i in range(broskov):
    a = random.randint(1, 6)
    b = random.randint(1, 6)
    if a == 6 or b == 6:
        est_shest = est_shest + 1
print(est_shest, round(est_shest / broskov, 4), round(11 / 36, 4))
1812 0.302 0.3056

Доля в шести тысячах бросков - 0,302 при точном значении 0,3056. Частота крутится около вероятности, но не обязана с ней совпасть; насколько далеко она может уйти, считает следующая глава.

Разбор: условие меняет коробку, а оценка объединения не требует ничего

Известно, что сумма на двух кубиках не меньше 10. Какова теперь вероятность, что среди них есть шестёрка? И второй вопрос, из другой области: в кластере 20 серверов, каждый за сутки падает с вероятностью 0,01. Какова вероятность, что упадёт хотя бы один?

bolshe9 = 0
bolshe9_i_shest = 0
for a in range(1, 7):
    for b in range(1, 7):
        if a + b >= 10:
            bolshe9 = bolshe9 + 1
            if a == 6 or b == 6:
                bolshe9_i_shest = bolshe9_i_shest + 1
print(bolshe9, bolshe9_i_shest, round(bolshe9_i_shest / bolshe9, 4))

p = 0.01
serverov = 20
vse_zhivy = (1 - p) ** serverov
print(round(1 - vse_zhivy, 4), round(serverov * p, 4))
6 5 0.8333
0.1821 0.2

Первая строка. Исходов с суммой от 10 всего шесть: (4,6), (5,5), (5,6), (6,4), (6,5), (6,6). Шестёрка есть в пяти. Условная вероятность 5/6, хотя без условия она была 11/36. Событие «сумма большая» и событие «есть шестёрка» зависимы: знание об одном сдвинуло вероятность другого почти втрое.

Вторая строка. Точный ответ 1 − 0,99²⁰ = 0,1821 получен перемножением и потому опирается на независимость: серверы падают каждый сам по себе. В жизни это неправда - у них общее питание, общий коммутатор и один и тот же неудачный релиз. Оценка объединения даёт 20 · 0,01 = 0,2 и не предполагает ничего: она верна и при общей розетке. Она чуть грубее точного ответа, зато её нельзя сломать зависимостью. В анализе алгоритмов это главный инструмент: «каждая из n плохих вещей случается с вероятностью не больше 1/n², значит хоть одна из них - не больше 1/n».

Граница оценки видна на тех же числах. Для 200 серверов она даёт 200 · 0,01 = 2 - число больше единицы, то есть утверждение «вероятность не больше 2» верно и бесполезно. Оценка объединения работает, пока сумма заметно меньше единицы.

Что ломается без этого

Сложение пересекающихся событий. «Запрос тормозит из-за базы в 30% случаев и из-за сети в 20%, значит в 50%» - верно, только если эти случаи не пересекаются. Если сеть лежит ровно тогда, когда лежит база, ответ 30%.

Умножение зависимых. «Диск отказывает с вероятностью 1% в год, два диска в зеркале откажут вместе с вероятностью 0,01%». Диски из одной партии, в одном корпусе, под одной нагрузкой отказывают вместе гораздо чаще: произведение занижает риск на порядки.

«Давно не выпадало». После пяти бросков без шестёрки вероятность шестёрки на шестом по-прежнему 1/6: броски независимы, у кубика нет памяти. Ожидать «компенсации» - та же ошибка, что считать события зависимыми без причины.

Перевёрнутое условие. P(A | B) и P(B | A) - разные числа. Вероятность шестёрки при большой сумме равна 5/6; вероятность большой суммы при шестёрке - 5/11.

Зачем это в работе

Всякий раз, когда алгоритм бросает монету, его время или ответ становятся событием в пространстве исходов, и вопрос «насколько это плохо» превращается в счёт долей. Случайный опорный элемент в быстрой сортировке, случайная хеш-функция из универсального семейства, случайное основание в тесте Миллера-Рабина из раздела про числа - у всех трёх гарантия сформулирована как вероятность.

За пределами алгоритмов то же самое считают при оценке надёжности. Три реплики, каждая недоступна 1% времени: если отказы независимы, все три лежат одновременно 0,01³, одну миллионную времени. Если у них общий балансировщик, который недоступен 0,1% времени, то именно он и определяет ответ. Правило умножения здесь не формула, а вопрос к архитектуре: что у реплик общего.

Теперь сам

  1. Бросают два кубика. Сколько исходов в событии «сумма равна 4» и какова его вероятность?
  2. Какова вероятность, что на двух кубиках выпали разные числа?
  3. Монету бросают четыре раза. Какова вероятность хотя бы одного орла?
  4. В таблице 1000 запросов, каждый попадает в медленный путь с вероятностью 1/10 000, зависимы они или нет - неизвестно. Оцени сверху вероятность, что медленный путь случится хотя бы раз.
  5. Известно, что на первом кубике выпало чётное число. Какова вероятность, что сумма двух кубиков равна 7? Зависимы ли эти события?

Ответ. 1. Три исхода: (1,3), (2,2), (3,1); вероятность 3/36 = 1/12.

  1. Одинаковые числа - шесть исходов из 36, разные - 1 − 6/36 = 5/6.

  2. Ни одного орла - (1/2)⁴ = 1/16; хотя бы один - 15/16.

  3. Оценка объединения: не больше 1000 · 1/10 000 = 0,1.

  4. Чётное на первом - 18 исходов, из них сумма 7 в трёх: (2,5), (4,3), (6,1). Условная вероятность 3/18 = 1/6 - та же, что без условия. События независимы.

Главное

Вероятность - это доля, а события - множества исходов; все правила получаются из счёта клеток. Складывать можно непересекающееся, перемножать - независимое, а когда про события ничего не известно, остаётся сумма как оценка сверху. Эта последняя оценка самая грубая и самая полезная: ей не нужна ни одна предпосылка, которую жизнь могла бы нарушить.

Комментарии

Пока нет комментариев. Будь первым!

Оставить комментарий

Комментарий появится после проверки. Email не публикуется. Войти, чтобы не вводить имя каждый раз.