Один из первых этапов - это проверить насколько "раздача карт" соответствует реальности. По простому, узнать не подкручен ли ГСЧ.
Сам "ГСЧ" для моей простенькой программки - это встроенная функция random() в python.
Эта функция использует так называемый "Вихрь Мерсенна" - на сегодняшний момент один из самых "точных" псевдо генераторов случайных чисел.
Как проходит тест:
Создается "случайная" последовательность из 52 карт (аналогия физического процесса шафла колоды).
Раздаем "карты".
Берем одного из игроков и "собираем комбинацию".
Прогоняем этот тест 1,000,000 раз (один миллион раз).
Да вроде бы достаточно... (мой код это выполнял 3,5 минуты). Завтра наверно запущу на 10 или 100 миллионов раз, но не вижу в этом смысла...)
Сравниваем количество полученных комбиначий с реальными статистическими значениями. Красным написано отклонение
Результаты:
Royal flushes 0,000044 0,000012%
Straight flushes 0,000296 0,000018%
Four of a kinds 0,001626 0,000054%
Full houses 0,025635% 0,000326%
Flushes 0,030216% 0,000038%
Straights 0,046163% 0,00003%
Tree of a kinds 0,048575% 0,000277%
Two pairs 0,234933% 0,000022%
Pairs 0,438392% 0,000167%
High cards 0,174120% 0,000001%
Для роялей и стритфлешей конечно выборка не сильно впечатляет. Но сам принцип отрабатывает.
По-этому делаю вывод.
Мой ГСЧ самый чесный на свете!
Дальше буду продолжать работу что бы симитировать ход раздачи с принимаемыми решениями типа рейза, паса, кола, чека и тд.
На первом этапе это будет "рандомное тыканье по кнопкам".
Потом к этим решениям постараюсь привязать какие-то взвешенные коефициенты. И посмотрит как это заиграет.
Disclaimer. Пишу это не для убийства покера а для развития собственный навыков программирования.
Прогресс по цели IRONMAN аж 1%... если не меньше))
обидно как-то. вроде ж здоровый нормальный мужик и спортом не занимаюсь. Да и курить не оставил. Правда намного меньше курю. Но это просто отговорки)