sackett, если короткий ответ, то не совсем, скорее верно то, что написал
underground.
Длинный ответ может получится слишком длинным, и я буду писать много очевидных вещей, но все равно попробую. В самом простом варианте Монте-Карло это про то, когда мы не понимаем аналитически как будет вести себя какая-то случайная величина, но можем её много раз смоделировать и посмотреть что в среднем выходит. Здесь непонятно, что рандомить.
Вообще, что мы пытаемся построить? Мы хотим найти “оптимальную” стратегию. В теории игр принято оптимальной стратегией считать равновесие Нэша - набор стратегий, что если любой из игроков будет пытаться свою стратегию поменять (при условии, что остальные свои стратегии не меняют), то этим он не сможет выиграть. То есть такая необыгрываемая стратегия. Другими словами, если игроки будут пытаться все время улучшать свои стратеги, обыгрывать соперников, а те будут делать то же самое, то при долгом таком изменении стратегий, они придут в точку, где дальнейшие изменения не приносят улучшений.
Как выглядит вообще покерная стратегия? не “ну тут уже хуйню доставить”, а с точки зрения компьютера? Допустим, мы зафиксировали вышедший флоп и 2 диапазона возможных стартеров у каждого игрока. На флопе начинается игровое дерево, как может развиваться раздача. Чек-чек, бет-колл, чек-бет-колл, бет-рейз-рейз-рейз-рейз-рейз-фолд и так далее. А еще могут быть разные сайзинги в бетах и рейзах. Упрощенно, будем считать, что есть 5 вариантов перейти на терн. А на терне одна из 49 карт, на которых стратегии будут отличаться. А потом 5 вариантов (опять же упрощенно) перейти на ривер, где еще 48 карт и опять есть действия. И в каждой ячейке, нужно не просто выбрать с каждой стартовой рукой, что мы делаем, а задать частоту, с которой мы это делаем. Все это с учетом всех карт и предыдущих действий в раздаче (это как бы вшито в понятие игрового дерева). Можно ну очень грубо прикинуть, игнорируя всевозможные эффекты исключения, что нужно выбрать (количество рук в диапазоне) * 5 * 49 * 5 * 48 * 5 ~ много миллионов чисел от 0 до 1. И это одна стратегия для одного конкретного флопа. Если попробовать долго рандомить действия в каждой вершине дерева и потом выбрать из них лучшее, то все равно получится полный хаос. Засчет того что пространство огромно, мы будем получать очень далекие от равновесия бессмысленные стратегии.
Тут нужен какой-то более умный, итерационный подход, который будет сходиться к равновесию. То есть как раз пытаться делать те самые изменения, улучшающие стратегию, считай долго играть с самим собой. Я немного увлекся и просмотрел несколько
статей, которые есть на тему нахождения покерного равновесия, толком ничего не понял, но какие-то слова узнал. Используется алгоритм Counterfractual Regret Minimization (CFR), который напоминает игру с самим собой. Доказано, что он сходится к равновесию для игр нулевой суммой. По умолчанию алгоритми, насколько я понял, на каждой итерации меняет стратегии на флопе и потом пересчитывает все терны и риверы, но это очень долго для покера никогда не досчитается. Поэтому используют модификации алгоритмов, которые рассматривают только случайную часть тернов и риверов. Эти алагоритмы получаются намного более быстрые, но чуть менее точные. Эти методы как раз и называются Monte Carlo CFR. Есть еще немного другие методы, в последнее время с помощью нейронок что-то считают.
Но нам, как игрокам, не важно как именно считает солвер. Важно, что получаются достаточно точные приближения равновесных стратегий. Точность которых подтверждается величиной насколько заэксплоитить одну из стратегий, чтобы выиграть у другой (в статьях это называют eps-Nash equilibrium). Например, если это 0.01 блайнда, то можно быть довольно уверенным, что это хорошие стратегий. Можно сказать, что солвер очень долго играет сам с собой, пытаясь улучшаться, пока не достигнута нужная точность. А мы потом смотрим, к чему он пришел, пытаемся это как-то понять и использовать.