Однажды, солнечным весенним утром, почитывая городской форум, я наткнулся на ссылку с простенькой игрой от известной торговой сети. Игра (акция), посвящённая чемпионату мира по футболу, представляла собой незамысловатое поле три на три, заполненное футбольными мячами. Кликая по мячу, мы открывали картинку с тем или иным товаром. При открытии трёх одинаковых картинок участнику гарантировалось бесплатное получение данного товара в одном из магазинов сети. Также под одним из мячей имелось изображение красной карточки, открытие которой означало конец игры.
Автор статьи принялся расследовать причины своего проигрыша и по результатам расчетов выяснил следующее:
Быстрый набросок формул на салфетке, и выяснилось, что вероятность выигрыша — 1/4. Для 5 полей пришлось повозиться, но расчётная вероятность получилась также 25%.Нас заинтересовала правильность такого расчета и, заменив салфетку на Excel, мы взялись за дело в поисках математической истины. Читателей, увлекающихся теорией вероятности, приглашаем под кат, дабы проверить правильность наших вычислений.
...
Запустив скрипт, я получил неожиданный результат — 25% выигрышей. Поиграв с количеством выигрышных элементов и общим количеством полей, я выяснил, что вероятность выигрыша в подобной игре не зависит от количества полей и равна единице, поделенной на количество выигрышных элементов, увеличенных на единицу.
Прежде всего выясняем правила игры. В этом нам, сам того не зная, помог пользователь Хабра Stecenko в своем комментарии. Также он пишет:
Если посмотреть скрипт автора, то он написан из предположения, что на поле ОБЯЗАТЕЛЬНО есть три карточки одного товара, по одной карточке еще пяти других товаров, и одна красная карточка, в то время как из описания игры этого абсолютно не следует — в правилах не сказано, что на поле обязана присутствовать выигрышная комбинация.В правилах, однако, сказано, что всего участвует 26 товаров. Получается, что генерируется выдача из 9 карт: 8 карт — это сочетания 26 товаров с повторениями, а одна карточка красная.
В таких условиях расчет математической вероятности выигрыша несколько сложнее, чем предположил автор оригинального поста. Игра состоит из нескольких слоев:
- Вероятность открыть N карт, не открывая красную — вероятность разной продолжительности игры без учета будет ли приз.
- Вероятность собрать комбинацию из 3 карт с одинаковыми товарами. Эта вероятность изменяется при разной продолжительности игры. Важно понимать, что набор из 8 карт с товарами и всегда одной красной не обязательно содержит хотя бы одну пару одинаковых карточек, не говоря о сразу трёх.
Начнём с простого — с понимания как будет уменьшаться число участников при росте числа открытых ими карт из-за правила красной карточки.
Шансы разной продолжительности игры
Мы вычисляем, насколько вероятно, что за N испытаний (открытых карточек) будет открыта красная.
UPD: Первоначально мы рассчитывали вероятность открыть красную с помощью биномиального распределения. Это не гарантировало нам строго 1 красную карточку, при таком распределении вероятнее всего была одна красная карточка, но их могло быть как 0, так и все 9 с очень-очень маленькой вероятностью. Опять же, спасибо Stecenko за то, что в комментарии указал нам на ошибку и предложил верное решение.
В последнем столбце показано сколько игроков из ста остаются в игре с такой продолжительностью. Остальные игроки выбывают по причине красной карточки, так и не узнав, была ли выигрышная комбинация в выданном наборе карточек.
Теперь рассчитаем вероятности собрать комбинацию из трех карточек с одинаковыми товарами. Это является условием получения приза.
Шансы на призы
Разложим игру логически. Мы открываем первую карту, а затем под эту карту подбираем пару, под пару подбираем тройку. С таким подходом мы можем рассчитать вероятность получить 3 одинаковых карты за три или больше попыток, исходя из того, что всего товаров в игре 26.
Для задач с фиксированным числом тестов или испытаний, если результатом любого испытания может быть только успех или неудача, испытания независимы, а вероятность успеха остается постоянной в течение всего эксперимента будем использовать формулу Бернулли — в Excel функция БИНОМ.РАСП.
С помощью функции БИНОМ.РАСП можно вычислить, например, вероятность того, что двое из трех следующих новорожденных будут мальчиками. Какова вероятность открыть три одинаковые за три попытки?
=БИНОМ.РАСП(3;3;1/26;0) по маске
=БИНОМ.РАСП(число_успехов; число_испытаний; вероятность_успеха; интегральная)
Или вот формула для расчета вероятности получить 3 одинаковых и определенных товара за 8 попыток.
=БИНОМ.РАСП(3;8;1/26;0), так?
Не совсем. Когда мы достигли продолжительности игры в 4 испытания, не допустив открытия красной и продолжая играть, мы получаем ситуацию с возможностью двух пар для подбора выигрышной тройки.
Условно два товара из 26 — это А и Б. Наши открытые карточки А-Б-А-Б. Вероятность больше не 1/26, а 1/26+(1/26)*«Вероятность двух пар при данной продолжительности игры».
Вероятность двух пар при данной продолжительности игры = БИНОМ.РАСП(2;5;1/26;0)^2
При достижении большей длины игры к 7 попытке у нас появляется комбинации типа А-Б-А-Б-В-В. Это означает, что вероятность теперь равна
=1/26*(1 +БИНОМ.РАСП(2;7;1/26;0)^2 +БИНОМ.РАСП(2;7;1/26;0)^3) и мы ищем третью карту для 1, 2 или трёх пар.
UPD: Также первоначально мы не учли, что первая попытка в нашем расчете выигрыша, очищенного от вероятности выбрать красную, — это открытие любого из 26 товаров, а значит 100% успех. Количество повторов товара в матрице это количество совпадений с любым одним товаром, а значит для выигрыша достаточно двух повторов к одному товару, а не совпадения 3 с определенным загаданным результатом. Таким образом, первый выбор любой карты и две попытки подобрать ещё две такие же образуют в сумме три эксперимента.
Зная вероятности, мы строим матрицу:
В ней мы находим вероятность каждого максимального количества повторов какого-либо товара для каждого варианта продолжительности игры. Помним, что вероятность выигрыша меняется на 4 попытке и на 7, а значит учитываем это в формуле БИНОМ.РАСП
Нам нужны варианты с максимальным количеством повторов какого-либо товара 3 и более. Так как игра прекратиться, как только мы соберем тройку, мы складываем вероятности по столбцам в области, выделенной жирным шрифтом.
Далее мы перемножаем шансы каждой продолжительности игры на шансы выиграть приз при такой продолжительности. Суммируя эти произведения, мы получаем вероятность 0,0192 или 192 победителя на 10000 игроков.
Да, действительно это очень низкая вероятность. Совсем не 25%. Снова обратимся к правилам игры:
8. Призовой фонд:116000 делим на вероятность выигрыша и получаем около 6 млн участников для того, чтобы разыграть все призы. Напомним, что на 1 января 2018 года по оценке Росстата в России было 146 938 921 постоянных жителей. Видимо, такова задумка организаторов игры — предоставить шанс выиграть почти каждому гражданину России.
8.1. Доступные призы: названия и количества
…
Итого 166000
UPD: Итоговая вероятность изменилась после внесенных правок. Сейчас мы можем проверить наши вычисления на практике с помощью скриптов, но удивителен Божий дар ума математиков-теоретиков предыдущих поколений, которые рассчитывали такое количество вероятностей, находя верное решение на бумаге и с помощью мысленных экспериментов.
Анализ кода показал автору оригинальной публикации, что скрипт ещё до начала игры “знает” её итог, однако никто не знает какой предопределенный результат выдаст скрипт конкретному пользователю. Зная математическую сторону вопроса, вы сможете сами сделать вывод о честности организаторов.
Комментарии (20)
Mnilionic
05.06.2018 18:44… предоставить шанс выиграть каждому гражданину России.
Или: Каждый выигравший гражданин России лишает шанса выиграть 1000 других граждан.
Ведь с каждым очередным выигрышем «фонд» счастливых комбинаций уменьшается. Влияет ли это на шанс победы? Значит ли это, что при старте акции будут максимальные шансы?
vassabi
05.06.2018 19:01+1у меня сокурсник писал на заказ мини-игры для мобилок и сайтов такого же типа.
Так вот — на поле нигде нет никаких предопределенных картинок, выигрышных комбинаций и т.д., а есть только сигнал от сервера — «выигрыш» и «проигрыш». Если первое — то куда бы ты не нажимал, клиент игры сделает тебе выигрыш, а если второе — то проигрыш, вот и все.
UPD: не, разумеется, где-то есть ребята, которые честно отдают все «на волю случая» и честный рандом.khim
05.06.2018 22:02Так вот — на поле нигде нет никаких предопределенных картинок, выигрышных комбинаций и т.д., а есть только сигнал от сервера — «выигрыш» и «проигрыш».
Видел одну подобную игру, где выигрыши были разными, бросались три кубика. При этом первые два всегда были выпадали на одинаковые числа. Ну а действительно — чего париться-то?
Так что успокойтесь: вероятность выигрыша не имеет вообще никакого отношения к вашим рассчётам, она задаётся организаторами аукциона. Всё остальное — антураж.
UPD: не, разумеется, где-то есть ребята, которые честно отдают все «на волю случая» и честный рандом.
Я много слышал про такое, но ни разу не видел.ainoneko
06.06.2018 08:17Я много слышал про такое, но ни разу не видел.
Потому что это
фантастикаРоберт Асприн, Питер Хек, «Нет Шутта шуттее старого Шутта»
Спойлер!Что может получиться, когда казино играет честно.Stecenko
05.06.2018 19:48+1Так не известно же, красная карточка обязательно есть на поле, или нет.
Если исходить из предположения, что красная карточка ОБЯЗАТЕЛЬНО присутствует в игре, то вероятность открыть красную карту зависит от предыдущего хода, и составит на:
1 ходу — 1/9
2 ходу — 1/8 (т.к. одна хорошая карта выбыла)
3 ходу — 1/7
…
8 ходу — 1/2
9 ходу — 1.
Т.е. если мы открыли 8 карточек, то последняя — 100% красная.
Соответственно вероятность не попасть на красную при открытии:
3 карт = 8/9*7/8*6/7 = 6/9
4 карт = 6/9*5/6 = 5/9
5 карт = 5/9 *4/5 = 4/9
…
8 карт = 1/9
9 карт = 0
Соответственно, все дальнейшие расчеты надо будет пересчитывать.
Или вот формула для расчета вероятности получить 3 одинаковых товара за 8 попыток =БИНОМ.РАСП(3;8;1/26;0), так?
Эта формула вычислит вероятность 3 успешных исходов из 8 попыток, при вероятности одного исхода в 1/26.
И она не применима для нахождения вероятности выпадения трех одинаковых товаров при выборе 8 товаров из 26 с возвратом.Сорри за отсутствие доказательства неприменимости, здесь должен быть анекдот:
Василий Иванович, а почему ты ушел из академии?
Понимаешь, Петька, слаб я в математике. Вот спрашивает меня преподаватель, сколько будет 0,5+0,5. Нутром чую — литр, а математически доказать не могу!
equity
05.06.2018 19:54Там вероятность «не дожить», вероятность что 1 из числа открытых красная.
Stecenko
05.06.2018 20:01Первая таблица, вероятность открыть красную карту, а не вероятность что 1 из числа открытых карт красная.
Для 8 карты вероятность должна быть 1/2 (т.к. 7 карт уже открыты), а не 38%.
Вероятность что 1 из числа открытых красная равна число открытых карт делить на 9.
Cloud4Y Автор
05.06.2018 20:52Там рассчитывается, что 1 например из 5 следующих будет красной. Или 1 из 8. Какая вероятность, что при таком числе открытых карт игрок уже выбыл. Но вы правы при таком расчете вероятность красной всегда 1/9, а значит может быть 0 на 9 или 2 на 9. Ваш вариант вернее. Хотя увидеть вторую красную невозможно и полностью проверить правило 1 красной на практике.
По второй части не понял доводов.Cloud4Y Автор
05.06.2018 21:14Коротко — наш расчет с биномиальным распределением не гарантирует строго 1 красную карточку, но игра не гарантирует необходимость открытия всех 9 карт.
Nubus
06.06.2018 04:45Вы смешали теорвер из 2х позиций. Первая-формула Бернулли тут применима только касательно каждой карточки, но не каждой клетки на карточке.
Каждая клетка на карточке не может быть описана формулой бернулли так-как есть 2 разных варианта получить проигрыш: красная карточка ИЛИ отсутствие выигрышной комбинации. То есть вилка событий будет Q=1-(p+x) где X соотношение пустышек к общей массе билетов.
В процессе игры с учетом наличия только одной красной карточки на поле (указано в правилах) вероятность открытия оной будет q=1-p, где p это шанс на обычную карту. То есть вероятность красной карточки на первой клетке: q=1-(8/9).
Шанс Q уже неизвестен его НЕВОЗМОЖНО рассчитать так-как неизвестно максимальное число билетов. То есть нигде не сказано что шанс выиграть какой-либо предмет X из Y, так-же нет указания максимального количества попыток.
kromm
05.06.2018 22:15Набросал скрипт независимо от вашего, результаты те же, так что автор статьи где-то сильно ошибается.
Если одна красная карточка обязательно присутствует на поле, то вероятность выигрыша получается 1.8%
Если не обязательно, а выпадает с такой же вероятностью как и остальные товары — то 5.3%
Cloud4Y Автор
06.06.2018 08:01Проверили скриптом вторую часть задачи. Полная вероятность собрать комбинацию 3 и более одинаковых карт из 8 получилась 0,07, что примерно равно теоретической вероятности (в этой части не учитывается возможность выпадения красной). Далее мы перемножили вероятность победы для каждой продолжительности игры на вероятность такой продолжительности по причине красной карты, но в итоге получили 0,77%, а не 1,8% как получилось у вас.
Наше решение действительно предполагает возможность не выиграть уже в момент сдачи карт, как пишет apirk habr.com/company/cloud4y/blog/413333/#comment_18738541 это противоречит коду игры. У вас в скрипте была возможность не выиграть по причине отсутствия троек в выданном наборе?
Stecenko
05.06.2018 20:03+1И да, после 11 июня призываю в комментарии (а лучше отдельным постом) Организаторов акции, со статистикой, результатами, комментариями и рассказом о логике скрипта.
apirk
06.06.2018 05:51Есть одна проблема. В оригинальной игре действительно на поле присутствуют 3 одинаковых элемента, игра после проигрыша показывает, «где они были», и что мог выиграть игрок. В JSON присутствует параметр
"PotentialPrizeImage":{"Type":1,"Name":"BB41C343ECEBCB0030F1F93A1F9E43CA.png"}
Так что вся статья неприменима к конкретной игре. Извините.
Daemonis
Почему в первой строчке первой таблицы вероятность открыть красную равна вероятности не открыть?
Cloud4Y Автор
Сместилось при оформлении. Заменили. Там количество выбывших. Вероятность красной на долю оставшихся.
Daemonis
«Остальные игроки выбывают по причине красной карточки, так и не узнав, была ли выигрышная комбинация в выданном наборе карточек.»
В некоторых случаях игроки узнают, что ее не было, открыв 7 карт :)
Daemonis
Ну и, вообще говоря, вероятности выпадения предметов меняются по мере того, как призы выигрываются.