Провел свой эксперимент. Давайте еще раз проговорим в чем он заключался.
1. Я не покупал эти билеты - я спарсил их. Это как зайти на сайт лотереи и выписать все билеты. Но программисты ленивые (привет ЛЛ) и поэтому я написал программу, которая их выписала за меня.
2. Так же я написал программу, в которую забиваешь бочонки и она показывает сколько билетов выиграло среди тех, которые я спарсил.
3. Я хочу посмотреть имеет ли смысл покупать больше билетов, чтобы увеличить шанс выиграть.
Я спарсил 100500 билетов, что эквивалентно 15+ млн. рублей. Проверил их в очередном розыгрыше, посчитал солько бы выиграл, если бы реально их купил.
В первом туре не выиграл ни один билет, как во втором, третьем и четвертом. А потом как поперло )). И куча билетов оказались выиграшными. И в итоге я бы выиграл 3 702 464 руб, если бы купил все эти билеты. Математика такая: около 25% затраченных средств я вернул бы обратно.
Вывод: Покупать больше билетов не имеет смысла!
Тут все выпавшие бочонки и сколько билетов выиграло на каком из них: https://github.com/oparinpv/stoloto/blob/main/Выпавшие бочонки.xlsx
Далее пойдет техническая часть. Если вам интересен сам код и проблемы, с которыми я столкнулся при написании кода - читайте далее.
Писал весь код на 1С. Конечно мог писать и на java и на php, но на 1С мне было проще и быстрее. И исходники приложу ниже в виде расширения для 1С.
Когда парсишь билеты - сайт отдает примерно 25 000 билетов относительно легко, а дальше начинает отдавать те билеты, которые были ранее. Хотя алгоритм повторяет поведении кнопки "Другие билеты" на сайте. Спустя сутки проблема уходит и опять парсишь 25 000 билетов.
Между вытаскиванием бочонков в третьем туре проходит 5-10 сек, а у меня запрос отрабатывал 12-25 сек. на проверку соответствия всех вытащенных бочонков билетам в базе данных. В итоге после 50 бочонков я не успел их проверить в режиме онлайн и пришлось ждать выложенных результатов, чтобы проверить их все. А я проверял всего 100к билетов. Сейчас-то понятно, что там стоит сервер гораздо мощнее моего бука, но как они выходили из этой ситуации в 90-х? Я предполагаю, что там работал целый отдел из 50-100 человек. И все проданные билеты делились между этими людьми. И каждый проверял свой список билетов, вводя выпавший номер в его ЭВМ.
Для тех, кому интересно повторить эксперимент - расширение для 1С, которое парсит, хранит и проверяет результаты: https://github.com/oparinpv/stoloto/blob/main/РусскоеЛото.cfe
Для тех, кто хочет проверить корректность моих подсчетов и/или составить более оптимальный запрос проверки - база данных 1С с билетами, которые я спарсил: https://github.com/oparinpv/stoloto/blob/main/Билеты Столото 18.02.24.dt