Тема: Покер
Показать сообщение отдельно
  #10  
Старый 15.02.2011, 17:21
ak3000 ak3000 вне форума
Прохожий
 
Регистрация: 14.02.2011
Сообщения: 13
Репутация: 10
По умолчанию

Страдалецъ, тут можно подойти и с той стороны что ты описываешь. Смотря какая цель перед тобой стоит. Но основа здесь одна - как раз об этой основе идет речь. Опишу еще раз, постараюсь поподробнее:

1) Какая задача стоит сейчас? Предположим что мы видим 2 карты своих и 2 карты противника, и при этом на столе еще нет общих карт. Мы хотим посчитать вероятности на победу наших 2 карт, против его 2 карт на текущий момент. В процессе игры на стол могут выйти 5 общих карт, если игра не завершится раньше (если все игроки сдадутся одному, т.е. откажутся повышать ставку). Каждый игрок старается собрать комбинацию как можно старше из своих 2 карт и общих карт лежащих на листе. Соответственно, нам в любом раскладе нужна функция которая будет определять у кого какая комбинация получилась. И после того как она будет написана мы, зная 2 своих карты, 2 карты противника (предположим что мы сейчас играем вдвоем), переберем все возможные комбинации карт которые могут выйти на стол при вскрытии (все комбинации из 5 карт) и определив в каждой их них кто выиграл, мы можем подсчитать в скольки случаях выиграл 1-ый игрок, в скольки 2-ой, сколько раз была ничья и исходя из этих цифр определить наконец вероятности на победу.

2) Для чего нам это нужно? В моем случае это нужно для того чтобы быстро смотреть вероятности на победу одной руки (2 карты у игрока называются его рукой) против другой. Потому что я заранее посчитаю все все эти вероятности и сохраню в файл. А также эту процедурку можно будет использовать и например для следующего: можно будет считать вероятности на победу своих карт по мере того как открываются общие карты.

Ниже я привел пример того, какую строку возвращает моя программа после того как определила комбинацию.

{
1 - флэш рояль = 1
2 - стрейт флэш = 2 Q -> где дама старшая карта в стрите
3 - каре = 3 T A -> T T T T A (туз - старшая карта)
4 - фул хаус = 4 3 J -> 3 3 3 J J (сначала та карта которых три штуки)
5 - флэш = 5 Q J 7 5 3 (в порядке убывания все карты)
6 - стрэйт = 6 7 (7 - старшая карта)
7 - сет или тройка = 7 4 K J
8 - две пары = 8 5 3 A (тоже по убыванию + старшая карта)
9 - пара = 9 Q A K J (пара дам + 3 старшие карты)
0 - ничего = 0 A K T 9 4 (0 + пять старших карт)
}

DJ PhoeniX, если ты у себя найдешь готовый рабочий правильный код, то вообще шикарно будет.
Ответить с цитированием