Загадка Тайного Санты
Возможно, вы помните мой рассказ от 26 октября 2023 года о телеигре «Сделка или нет», которая проходила на корабле. В этой игре каждый игрок мог купить карточки, дающие шанс выйти на сцену. Однако каждая карточка давала шанс выиграть утешительные призы. Утешительные призы представляли собой 20 чемоданчиков, за которыми случайным образом располагались 20 различных денежных призов. Чемоданы открывались поднятием клапанов. Победа зависела от того, сколько призов на его карточке совпадало со случайным набором одинаковых призов, отображаемых на экране. Нерешенной проблемой из того выпуска был вопрос о вероятности любого заданного количества совпадений.
Эта задача обычно называется «Тайный Санта». Название происходит от рождественской игры, где группа людей, обычно из одного офиса, вытаскивает из шляпы имена всех сотрудников офиса, чтобы определить, кому подарить подарок. Проблема игры в том, что есть вероятность вытащить своё собственное имя, что совсем не весело. В среднем, это произойдёт с одним игроком в каждом офисе, независимо от количества сотрудников. Один из вопросов, на который я пытаюсь ответить в этом информационном бюллетене, — это точная вероятность того, что никто не вытащит своё собственное имя.

Когда я писал новостную рассылку от 26 октября, я точно не знал, как произвести расчеты, поэтому использовал функцию Пуассона для приблизительных оценок. Однако эта проблема не даёт мне покоя с тех пор. Я всегда считал приблизительные оценки крайне неудовлетворительными с интеллектуальной точки зрения.
Сначала я написал компьютерную программу, которая перебирала все возможные порядки призов и подсчитывала количество совпадений в каждой перестановке. Однако, имея 13 чемоданов, этой программе потребовался примерно день, чтобы перебрать все 6 227 020 800 перестановок. 20 чемоданов содержали бы 2 432 902 008 176 640 000 перестановок, на перебор которых ушло бы около миллиона лет.
Во-вторых, я зашёл в Excel и попытался решить задачу рекурсивно. Это оказалось намного проще, чем я ожидал. Мне следовало сделать это именно так с самого начала.В оставшейся части этого информационного бюллетеня будет объяснена логика, лежащая в основе такого подхода.
Предполагаю, что читатель знаком с функцией Excel combin(x,y), которая вычисляет количество способов выбрать y элементов из x. Точная формула выглядит так: x!/(y!*(xy)!).
Начнём с нескольких очевидных случаев.
- 1. Поскольку у Санта-Клауса всего один, очевидно, что ему дают собственное имя.
- 2. Если Санта-Клаусов два, то есть 50/50 шанс, что оба получат свои имена или имена друг друга.
- 3. При наличии трёх Санта-Клаусов каждый может получить своё имя только одним способом. Два человека могут получить своё имя 0 способами, потому что в этом случае последний человек тоже получит своё имя, так как останется только один. Один человек может получить своё имя 3 способами: по одному для каждого из трёх Санта-Клаусов, а остальные двое — по одному способу. 3*1 = 1. Всего существует 3! = 6 возможных способов упорядочить 3 имени. Количество способов, при которых никто не получит своё имя, равно оставшемуся числу: 6-1-3 = 2.
Вот чего мы достигли на данный момент:
| Матчи | 3 Санта-Клауса | 2 Санта-Клауса | 1 Санта-Клаус |
| 3 | 1 | ||
| 2 | 0 | 1 | |
| 1 | 3 | 0 | 1 |
| 0 | 2 | 1 | 0 |
| Общий | 6 | 2 | 1 |
Далее перейдём к четырём Санта-Клаусам.
4 совпадения: Всегда есть 1 способ, которым каждый получает своё собственное имя.
3 совпадения: Всегда невозможно, чтобы все, кроме одного человека, вытянули свои имена. После того, как все, кроме одного человека, вытянули свои имена, останется только один человек и одно имя, и они должны совпадать.
2 совпадения: существует 6 способов выбрать 2 человек из 4, которые подойдут друг другу. В остальных 2 случаях есть 1 способ, которым они не подойдут друг другу — вытянуть имена друг друга.
1 совпадение: Есть 4 способа выбрать Санту, который совпадает сам с собой. Из случая с 3 Сантой видно, что есть 2 способа, которыми остальные 3 Санты не совпадают, что должно произойти. Таким образом, количество комбинаций для 1 совпадения составляет 4*2=8.
0 совпадений: Снова вычитаем все остальные варианты из общего числа перестановок. 4! – 1 – 6 – 8 = 24-15=9.
Сейчас мы находимся в:
| Матчи | 4 Санта-Клауса | 3 Санта-Клауса | 2 Санта-Клауса | 1 Санта |
| 4 | 1 | |||
| 3 | 0 | 1 | ||
| 2 | 6 | 0 | 1 | |
| 1 | 8 | 3 | 0 | 1 |
| 0 | 9 | 2 | 1 | 0 |
| Общий | 24 | 6 | 2 | 1 |
Далее перейдём к пяти Санта-Клаусам.
5 совпадений: Всегда есть 1 способ, которым каждый получает своё собственное имя.
4 матча: Невозможно по причинам, изложенным в деле о 4 Санта-Клаусах.
3 совпадения: существует 10 способов выбрать 3 человек из 5, чтобы они совпали друг с другом. Есть 1 способ, чтобы имена двух других людей совпали. Таким образом, существует 10 способов для 3 совпадений.
2 совпадения: существует 10 способов выбрать 2 человек из 5, которые подойдут друг другу. Для остальных 3 есть 2 способа, которыми они не подойдут, что мы видим на примере с 3 Санта-Клаусами. Таким образом, существует 10*2=20 способов для 2 совпадений.
1 совпадение: Существует 5 способов выбрать Санту, который совпадает сам с собой. Из случая с 4 Сантой видно, что существует 9 способов, которыми остальные 4 Санты не совпадают, что должно произойти. Таким образом, количество комбинаций для 1 совпадения составляет 5*9=45.
0 совпадений: Снова вычитаем все остальные возможности из общего числа перестановок. 5! – 1 – 0 – 10 – 20 – 45 = 44.
Сейчас мы находимся в:
| Матчи | 5 Санта-Клаусов | 4 Санта-Клауса | 3 Санта-Клауса | 2 Санта-Клауса | 1 Санта |
| 5 | 1 | ||||
| 4 | 0 | 1 | |||
| 3 | 10 | 0 | 1 | ||
| 2 | 20 | 6 | 0 | 1 | |
| 1 | 45 | 8 | 3 | 0 | 1 |
| 0 | 44 | 9 | 2 | 1 | 0 |
| Общий | 120 | 24 | 6 | 2 | 1 |
Следуя той же логике, мы получаем следующую таблицу для количества Санта-Клаусов до 10.
| Мат. | 10 Санта-Клаусов | 9 Санта-Клаусов | 8 Санта-Клаусов | 7 Санта-Клаусов | 6 Санта-Клаусов | 5 Санта-Клаусов | 4 Санта-Клауса | 3 Санта-Клауса | 2 Санта-Клауса | 1 Санта |
| 10 | 1 | |||||||||
| 9 | 0 | 1 | ||||||||
| 8 | 45 | 0 | 1 | |||||||
| 7 | 240 | 36 | 0 | 1 | ||||||
| 6 | 1890 | 168 | 28 | 0 | 1 | |||||
| 5 | 11088 | 1134 | 112 | 21 | 0 | 1 | ||||
| 4 | 55650 | 5544 | 630 | 70 | 15 | 0 | 1 | |||
| 3 | 222480 | 22260 | 2464 | 315 | 40 | 10 | 0 | 1 | ||
| 2 | 667485 | 66744 | 7420 | 924 | 135 | 20 | 6 | 0 | 1 | |
| 1 | 1334960 | 133497 | 14832 | 1855 | 264 | 45 | 8 | 3 | 0 | 1 |
| 0 | 1334961 | 133496 | 14833 | 1854 | 265 | 44 | 9 | 2 | 1 | 0 |
| Общий | 3628800 | 362880 | 40320 | 5040 | 720 | 120 | 24 | 6 | 2 | 1 |
Обратите внимание, что количество перестановок для совпадений 0 и 1 всегда отличается не более чем на единицу. Общее количество совпадений для 0 на единицу больше, чем для четного числа Санта-Клаусов, и на единицу меньше для нечетного числа. Если мы примем, что это всегда так, а это так, мы можем быстро определить количество совпадений для 11 или более Санта-Клаусов следующим образом.
11 Санта-Клаусов: Для одного совпадения существует 11 Санта-Клаусов, которые должны совпадать, и 133 496 способов, которыми остальные 10 не совпадают, исходя из случая с 10 Санта-Клаусами. Таким образом, количество перестановок для 1 совпадения составляет 11 * 133 496 = 14 684 571. Поскольку 11 — нечетное число, количество перестановок для 0 совпадений на единицу меньше, или 14 684 571 – 1 = 14 684 570.
12 Санта-Клаусов: Для одного совпадения существует 12 Санта-Клаусов, которые должны совпадать, и 14 684 570 способов, которыми остальные 11 не совпадают (из случая с 11 Санта-Клаусами). Таким образом, количество перестановок для одного совпадения составляет 12 * 14 684 570 = 176 214 840. Поскольку 12 — четное число, количество перестановок для 0 совпадений на единицу больше, или 176 214 840 + 1 = 176 214 841.
Следуя той же логике, вот количество перестановок для 0 совпадений от 1 до 20 Санта-Клаусов, включая общее количество перестановок и вероятность.
| Санта-Клаусы | 0 матчей | Полные перестановки | Вероятность |
| 20 | 895,014,631,192,902,000 | 2 432 902 008 176 640 000 | 0.367879 |
| 19 | 44,750,731,559,645,100 | 121,645,100,408,832,000 | 0.367879 |
| 18 | 2 355 301 661 033 950 | 6 402 373 705 728 000 | 0.367879 |
| 17 | 130,850,092,279,664 | 355,687,428,096,000 | 0.367879 |
| 16 | 7 697 064 251 745 | 20 922 789 888 000 | 0.367879 |
| 15 | 481,066,515,734 | 1 307 674 368 000 | 0.367879 |
| 14 | 32,071,101,049 | 87,178,291,200 | 0.367879 |
| 13 | 2 290 792 932 | 6 227 020 800 | 0.367879 |
| 12 | 176,214,841 | 479,001,600 | 0.367879 |
| 11 | 14 684 570 | 39 916 800 | 0.367879 |
| 10 | 1 334 961 | 3 628 800 | 0.367879 |
| 9 | 133,496 | 362,880 | 0.367879 |
| 8 | 14,833 | 40,320 | 0.367882 |
| 7 | 1,854 | 5040 | 0.367857 |
| 6 | 265 | 720 | 0.368056 |
| 5 | 44 | 120 | 0.366667 |
| 4 | 9 | 24 | 0.375000 |
| 3 | 2 | 6 | 0.333333 |
| 2 | 1 | 2 | 0.500000 |
| 1 | 0 | 1 | 0.000000 |
Обратите внимание, как вероятность 0 совпадений приближается к 0,367879. Вам знакомо это число? Так и должно быть! Это 1/e. Я мог бы написать целую книгу об оценке Пуассона, но этот информационный бюллетень и так уже слишком длинный. Для получения дополнительной информации по этой теме я рекомендую книгу Стэнфорда Вонга «Sharp Sports Betting», в которой объясняется, как использовать функцию Пуассона для анализа ставок на исходы Суперкубка.
Вернемся к игре «Сделка или нет», которая эквивалентна случаю с 20 Санта-Клаусами. Нам нужно узнать количество комбинаций от 0 до 20 совпадений.
Количество комбинаций для m совпадений из 20 Санта-Клаусов равно combin(20,m)*z(m), где z(m) = количество комбинаций из нуля совпадений для m Санта-Клаусов. В следующей таблице используется этот метод для нахождения количества перестановок для 0–20 совпадений с 20 Санта-Клаусами.
| Матчи | Перестановки | Вероятность |
| 20 | 1 | 0.000000 |
| 19 | - | 0.000000 |
| 18 | 190 | 0.000000 |
| 17 | 2280 | 0.000000 |
| 16 | 43,605 | 0.000000 |
| 15 | 682,176 | 0.000000 |
| 14 | 10 271 400 | 0.000000 |
| 13 | 143,722,080 | 0.000000 |
| 12 | 1 868 513 010 | 0.000000 |
| 11 | 22,421,988,160 | 0.000000 |
| 10 | 246,642,054,516 | 0.000000 |
| 9 | 2 466 420 377 200 | 0.000001 |
| 8 | 22,197,783,520,770 | 0.000009 |
| 7 | 177,582,268,088,640 | 0.000073 |
| 6 | 1 243 075 876 659 240 | 0.000511 |
| 5 | 7,458,455,259,939,930 | 0.003066 |
| 4 | 37,292,276,299,704,500 | 0.015328 |
| 3 | 149,169,105,198,817,000 | 0.061313 |
| 2 | 447,507,315,596,451,000 | 0.183940 |
| 1 | 895,014,631,192,902,000 | 0.367879 |
| 0 | 895,014,631,192,902,000 | 0.367879 |
| Общий | 2 432 902 008 176 640 000 | 1.000000 |
Если вы сравните эти вероятности с моими оценками Пуассона в информационном бюллетене от 26 октября 2023 года, вы увидите, что все они совпадают с указанными шестью знаками после запятой, что демонстрирует полезность функции Пуассона и числа e.

На следующей неделе я планирую подробнее остановиться на этой теме и представить общую формулу для количества перестановок любого числа Санта-Клаусов.