Почему правило «если мне 20 раз выпал орёл, то в 21-ый точно выпадет решка», в действительности, не работает
Сразу предупрежу, что это статья не про программирование. Она про некоторые аспекты комбинаторики и теории вероятностей.
Почему эта статья вообще возникла:
Люблю я смотреть одного ютубера, нравится мне он очень. И вот, давеча, мы час в прямом эфире сейвскамом пытался выбить из контейнера айтем с наилучшими характеристиками. Ему всё не везло и не везло, и через какое-то время он начал рассказывать, что ему скоро должно повезти, потому что вероятность того, что ему будет не везти так долго становится всё более абсурдно не возможной. Часть чата и я пытались его переубедить, но у нас что-то не получилось… Потому что его аргументы, должен признать, звучали убедительно… Итак, давайте же разберёмся.
Для начала, немного терминологии:
В комбинаторике задачи вроде
Сколько возможных уникальных комбинаций четырёхзначного пин-кода можно получить, имея циферблат с 10-ю цифрами
Сколько возможных последовательностей из 20 элементов можно получить, бросая кубик или монетку
относятся к категории «Размещение с повторением». У этой категории есть два условия:
Порядок важен (123 и 132 — это разные комбинации)
Элементы могут повторяться (то есть если нам выпала шестёрка — это не значит, что шестёрка нам больше в этой последовательности не упадёт, но так же и не значит, что она ну уж точно обязана выпасть ну хотя бы ещё разочек)
Как это всё считается:
Если мы хотим посчитать количество возможных комбинаций, то мы берём количество вариантов значения в одном элементе последовательности (например, кубик может нам выдать 6 значений, а монетка 2), и умножаем на себя столько раз, сколько элементов в последовательности. То есть возводим в степень. Таким образом, если у нас на циферблате 10 цифр, то можно составить 10^4 уникальных комбинаций.
Если же нас интересует вероятность конкретной комбинации — то мы делаем то же самое, но возводим в степень не количество вариантов, а шанс конкретного. Шанс того, что кубик выдаст тройку — 1/6, шанс получить орла — ½. Таким образом, вероятность получить последовательность из трёх орлов равна 0.5^3 = 0.125
С теорией закончили, вернёмся к монетке.
Вообще, уже давно все математики говорят, что вероятность события не учитывает контекст прошлых событий. Когда мы бросаем монетку — у нас всегда шанс 50/50. А вот это вот всё «ну не может 6 раз подряд вырасть орёл, и на седьмой раз тоже орёл» — это исключительно наше когнитивное искажение, ибо мы привыкли во всём искать закономерности. Но такие объяснения мало кого проймут. Так в чём же фундаментальная ошибка такого мышления? Давайте на примере.
Вот мы бросили 5 раз монетку, и 5 раз нам выпала решка (будем обозначать буквой Р). То есть у нас есть комбинация РРР РР. Вероятность такой комбинации — 0.5^5 == 0.03125
Мы собираемся бросить монетку ещё раз, и мы ТОЧНО УВЕРЕНЫ, что ну ШЕСТОЙ раз решка ТОЧНО не выпадет. Потому что это уже последовательность РРР РРР, вероятность которой — 0.5^6 == 0.015625. Ну меньше же, ну! Поэтому мы ожидаем орла (будем обозначать буквой О)
А теперь внимательно следим за руками: РРР РРО — это точно такая же последовательность, и для неё точно так же просчитывается вероятность:
0.5^5 (5 Р подряд) * 0.5 (а вот это уже О). И что мы получаем? Мы получаем всё те же 0.5^6.
Итак, вероятность РРР РРР (0.5^6) == РРР РРО (0.5^6), а значит — и правда, каждый бросок монетки имеет шанс 50/50 вне зависимости от того, что выпадало раньше. Монетка — не git, она ничего не помнит.
Но дальше только хуже. До примеров с монеткой мы всем стримом скатились когда пытались пояснить друг другу за вероятности. Аргументы ютубера звучали довольно убедительно, потому что он оперировал, скорее, не вероятностью сиюминутного «броска», а не-вероятностью последовательности из, ну, не соврать, сотни неудач подряд. Но в чём же проблема?
А проблема в том, что мы просто не любим считать. Вот есть у нас сундук, из которого мы хотим вытащить что-то хорошее. Это для нас успех. А всё не хорошее — это для нас провал. Наш мозг всё упрощает и низводит всё до монетки: мы можем либо преуспеть, либо провалиться. А значит, шансы близки к 50/50. Умом-то мы понимаем, что это не так, но задумываться как-то не приходится.
Давайте на примере.
Дело было с киберпанком и попыткой вытащить оружие уровня 5++ с двумя пустыми дырками под модификации. Что мы имеем:
Оружие может выпасть одного из следующих уровней:
4
4+
4++
5
5+
5++
Конфигурация дырок может быть одной из следующих:
0 дырок
1 дырка
1 дырка, но она занята
2 дырки
2 дырки, но одна занята
2 дырки, но они обе заняты.
Очевидно, что результирующее оружие — это комбинация этих двух аспектов. Итого мы на выходе получаем 6×6 == 36 вариантов того, что может выпасть. Из них нас интересует только 1
Это значит, что шанс успеха у нас — 1/36 — 0.0277777(…)
А все остальные варианты, какими бы они ни были, нам не подходят, и считаются провалом. Следовательно, вероятность провала == 1 — 1/36 == 35/36 == 0.9722222(…)
Заметили, в чём подвох? Даже не близко к 50/50. Но дальше ещё круче
Почему же принцип «если мне столько раз не везло, то вот сейчас вот НУ ТОЧНО повезёт» не работает, и почему с такой установкой в казино вам нельзя идти ни в коем случае:
Что такое «мне не везло, а потом повезло» с точки знеия комбинаторики? Пусть Н — «не повезло», а П — «Повезло».
Если нам повезло с первого раза — наша последовательность — П
Если нам не повезло, а потом повезло — НП
Повезло только с третьего раза — ННП
С шестого — ННН ННП
Заметили?
Вот вероятности:
П: 1/36 == 0.027777778
НП: 35/36×1/36 == 35/(36^2) == 35/1296 == 0.027006173
ННП: (35/36)^2×1/36 == (35^2)/(36^3) == 1225/46656 == 0.026256001
ННН ННП: (35/36)^5×1/36 == (35^5)/(36^6) == 52521875/2176782336 == 0.024128216
А вот, для сравнения, вероятности провалов:
Н: 35/36 == 0.972222222
НН: (35/36)^2 == 0.945216049
ННН: (35/36)^3 == 0.918960048
ННН ННН: (35/36)^6 == 0.84448757
Заметили? Хоть шансы провала и падают, но шансы успеха ТОЖЕ ПАДАЮТ!
Я тут немножко повозился с html и js и нарисовал график. Заранее извиняюсь за красоту, но я бэкендер, мне можно : D
Красный — провал, зелёный — успех. Цена деления по-вертикали — 5%, по-горизонтали — 1 итерация
В принципе, я прогнал 500 итераций, и получил под конец вот такое:
Как видно, чем больше мы «играем» в эту рулетку — тем меньше наши шансы на победу. Да, на проигрыш шансы тоже уменьшаются, но они всё равно сильно выше.
В общем, я надеюсь, у меня получилось и себе и вам объяснить, почему этот обман мозга на самом деле не имеет ничего общего с действительностью, и как правильно считать вероятности провала, когда провальных результатов больше, чем один.