| ||||
| ||||
|
Важные объявления |
|
06.04.2004, 12:01 TS | #1 (permalink) |
Ветеран
Регистрация: 12.02.2004
Адрес: Россия, УРФО
Сообщений: 1,399
|
Приветствую.
Это отчасти продолжение темы начатой мной еще на [Зарегистрироваться?] Нужна идея как ускорить расчет покерных раскладов с помощью таблиц. На данный момент считается все по формулам комбинатроники. Третий оптимизированный варинат считает обмен 5 карт на 1 боксе за 6 секунд (Первый варинат считал за 2 суток, второй за 2,5 минуты ). Это все на Athlon XP 2200+ Что хранить в таблицах? Делал прикидки, получается большой объем данных. :( Жду.
__________________
Mariner Западное полушарие Марса рассечено на протяжении 4 000 км вдоль экватора рифтовыми долинами Маринер - крупнейшим поясом разломов на планете. |
0 |
09.04.2004, 10:40 | #2 (permalink) |
Интересующийся
Регистрация: 20.03.2004
Адрес: Москва
Сообщений: 75
|
Комбинации дилера считаются по комбинаторным формулам для начальной позиции и для некоторых критических вариантов обмена. Для комбинации Туз-Король учитывается 3-я карта. Для остальных комбинаций учитывается только один номинал - для пары это номинал пары, для 2-х пар номинал старшей пары и т.д. Все флеши считаются одинаковыми. Эти числа запоминаются и потом используются для сравнения с комбинациями игрока. Комбинации игрока для всех рассматриваемых вариантов обмена считаются по комбинаторным формулам, так же как и комбинации дилера. Этот алгоритм в некоторых ситуациях дает значительную ошибку в оценке, но при выборе хода ошибки редки и все они недорогие.
Время оценки одной позиции 0,001c Миллион раздач за 17 мин. Для оценки игры типа "Обмен 1,2,5 за анте" (преимущество на 1-ом боксе около 3%, на втором около 5%)хватает выше крыши. А потом, когда дело доходит до разработки выигрышной стратегии можно и более точные алгоритм использовать. Там 1-2 сек. на позицию - вполне сносный результат. |
0 |
10.04.2004, 20:31 TS | #5 (permalink) | ||
Ветеран
Регистрация: 12.02.2004
Адрес: Россия, УРФО
Сообщений: 1,399
|
Приветствую!
Еще раз повторю, мне нужна всего лишь идея. Остальное додумывается самостоятельно в автономном режиме. Мой алгоритм позволяет с помощью одной и той же процедуры считать обмен 0..5 карт при открытых 0..5 карт дилера. Только медленно. Алгоритм следующий. Задаем 5 карт игрока. Задаем открытую карту дилера. По формулам комбинатроники определяем комбинации дилера. Затем по формулам комбинатроники считаем сколько раз проиграет данный расклад игрока дилеру. Сколько раз выиграет. Ну и до кучи считаем ничьи. При заданных оплатах за комбинации, считаем МО. Если проводим обмен 1..5 карт, то алгоритм будет следующим. Убираем из начального расклада игрока 1..5 карт, добираем в цикле недостающие карты. Получаем новый расклад к которому применяется приведенный выше алгоритм. Суммируем МО каждого расклада и делим на число таких раскладов при обмене. Например, обменять 1 карту игрока можно 5 способами. Пусть у нас первый бокс и открыта 1 карта дилера. Меняем 1 карту в первой позиции расклада игрока. Всего возможно 52-1-5=46 обменов. Получаем 46 новых раскладов игрока и значений их МО. Затем меняем карту во 2,3,4 и 5 позиции расклада игрока. Выбираем лучшее значение МО и, соответственно, позиции обмена. Обменять 5 карт можно всего одним способом. Возможных новых комбинаций игрока С(46,5)=1370754. Мой алгоритм считает около 2 минут. Тормоза из-за того, что необходимо посчитать МО для 1370754 новых раскладов. :? Какие данные надо предварительно насчитать и запомнить, чтобы ускорить расчет обмена 5 карт? Обмен 5 карт рассматриваю в том плане, что он самый требовательный к скорости расчета. 2 Ivan Цитата:
Можно чуть подробнее про "Комбинации игрока для всех рассматриваемых вариантов обмена считаются по комбинаторным формулам". Как ты считаешь возможные комбинации игрока по формулам комбинатроники? Смущает вот что. Обмен 5 карт у игрока. Можем посчитать по формулам комбинатроники сколько комбинаций различного типа может быть из оставшихся 46 карт у игрока. Затем, посчитать сколько возможных комбинаций дилера. А вот как теперь найти МО обмена? 2 Korovin Цитата:
__________________
Mariner Западное полушарие Марса рассечено на протяжении 4 000 км вдоль экватора рифтовыми долинами Маринер - крупнейшим поясом разломов на планете. |
||
0 |
10.04.2004, 22:03 | #6 (permalink) |
Интересующийся
Регистрация: 20.03.2004
Адрес: Москва
Сообщений: 75
|
Итак, считаем сколько получится комбинаций дилера каждого сорта и запоминаем их в массиве
Нет игры, AK4, AK5,... AKQ, 22, 33, .. AA, 3322, 44xx, .. AAxx, 222, 333, AAA, Str5, Str6, StrA, F, Full, Care, StrFl. Для обмена 5 карт получаем точно такой же массив чисел с возможными комбинациями игрока после обмена 5 карт. Теперь по этим двум массивам получаем МО обмена 5 карт Процедура очень простая. Делается один проход по комбинациям, Числа дилера по ходу цикла суммируются и для каждой комбинации имеем сколько комбинаций дилера старше его, а сколько младше. Для других обменов (меньше пяти карт) - заполняем тот же массив с учетом, что некоторые карты уже сданы. Формулы, кстати получаются довольно громоздкие (особенно для всяких там флешей и Туз-Король). Ошибок там выловил немерянно. Для шестикарточного так и не написал до сих пор. А там еще сложней (т.к. в 5-ом, если есть пара то ни стрит, ни флеш уже не может быть) |
0 |
10.04.2004, 22:57 TS | #7 (permalink) |
Ветеран
Регистрация: 12.02.2004
Адрес: Россия, УРФО
Сообщений: 1,399
|
Приветствую!
2 Ivan Спасибо за пояснения. Мне приходила в голову идея насчитать возможные комбинации дилера и игрока. Но это все, насколько я понимаю, применимо только к перовму боксу. Например, на первом боксе поменяли 1 карту. На 2 боксе хотим сбросить 5 карт. Получается, что необходимо посчитать обмен 5 карт на 2 боксе, при условии, что вышло 6 карт. А ведь на первом боксе можно сбросить и не одну, а 1..5 карту. А третий бокс? Ээээ. Вот тут моя мысль останавливается. :? ЗЫ. В твоей программе лезем в меню "Читать распечатку". В файле выводиться 1000000, Res1 = -0.9 %, Res2 = -0.6, Res2 = 0.0 % Думаю, что вместо последнего "Res2" должно быть Res3. Кроме того добавь в программу расчет дисперсии. Это понадобиться для расчета банка и рисков. И еще. 1000000 раздач может быть мало для выхода на заданную точность оценки МО. Могу прислать формулу.
__________________
Mariner Западное полушарие Марса рассечено на протяжении 4 000 км вдоль экватора рифтовыми долинами Маринер - крупнейшим поясом разломов на планете. |
0 |
11.04.2004, 09:41 | #8 (permalink) |
Интересующийся
Регистрация: 20.03.2004
Адрес: Москва
Сообщений: 75
|
Нет никакой разницы 1-ый бокс или 6-ой.
Процедура одна и та же. На входе - какие карты уже есть на боксе (4-если меняли одну, 3 - если меняли две и т.д) и список вышедших карт (не важно мы их выбросили с этого бокса или с предыдещего) На выходе массив чисел (сколько каких комбинаций/номиналов) Res3 конечно. Там еще и Res4 вместо Res5. Спасибо. Дисперсию надо бы приделать, конечно. Я ее, честно говоря, и не считал никогда. Так, по счастью, и катал все время без всякой дисперсии. Формулу пришли. А какая, кстати, заданная точность? |
0 |
11.04.2004, 16:25 TS | #9 (permalink) |
Ветеран
Регистрация: 12.02.2004
Адрес: Россия, УРФО
Сообщений: 1,399
|
Приветсствую!
2 Ivan Переходим в мыло. Жди письмо. 2 All Если кто-то желает высказть еще идеи, буду рад увидеть здесь, на форуме, или в письме.
__________________
Mariner Западное полушарие Марса рассечено на протяжении 4 000 км вдоль экватора рифтовыми долинами Маринер - крупнейшим поясом разломов на планете. |
0 |
12.04.2004, 08:36 | #10 (permalink) |
Бессмертный
Регистрация: 13.02.2004
Адрес: Россия
Сообщений: 3,027
|
У тебя очень приличное ядро, считает миллион случайных рук за 86 секунд, так? Попробуй считать не сверху, а снизу....
Насколько я помню, мы еще в прошлом году обсуждали вариант уплотнения мастей. Это позволит тебе уменьшить число анализируемых комбинаций при обменах, например для покупки шестой карты нужно будет считать не 46 вариантов раскладов, а 20-30, и т.п. Ivan, речь идет об абсолютно точной оценке руки (комбинаций дилера выше/ниже/равно). Для расчета МО, тем более на двух боксах, безусловно требуется симуляция, так как даже такой скорости недостаточно. Все что мне удавалось, это перебрать ВСЕ варианты игры на один бокс в шестикарточный с ТК, результаты я выкладывал на poker.ru год назад Удачи. |
0 |
13.04.2004, 10:33 TS | #11 (permalink) | |
Ветеран
Регистрация: 12.02.2004
Адрес: Россия, УРФО
Сообщений: 1,399
|
Приветствую.
2 Korovin Цитата:
Насчет сжатия по мастям. Учитывать или не учитывать опадание карт игрока в масть дилера? Если не учитывать, то все просто. А если учитываешь, то получается: одна из карта игрока совпдает с мастью дилера, две карты игрока сопадают с мастью дилера. Ну и т.д.
__________________
Mariner Западное полушарие Марса рассечено на протяжении 4 000 км вдоль экватора рифтовыми долинами Маринер - крупнейшим поясом разломов на планете. |
|
0 |
13.04.2004, 19:59 | #12 (permalink) |
Незнакомец
Регистрация: 13.04.2004
Сообщений: 17
|
Приветствую!
Спасибо всем участникам этого треда за ценную информацию . Поделюсь своими результатами. Я в общем согласен с процедурами, которые были изложены выше. Уточню - я имею ввиду два способа расчета вероятностей, либо прямой перебор по циклам всех возможных выпадений (скажем для обмена одной карты это 46), либо сделать клевую функцию, которая как-то будет считать эти вероятности все сразу. Проблемы первого варианта очевидны - это низкое быстродействие. У меня для обмена пяти карт выходит около 3 секунд. Конечно с помощью оптимизаций можно выжать в несколько раз меньше, но это погоды не сделает. Обратимся поэтому ко второму варианту. Тут алгоритмически все совсем не просто, но для пяти карт сделать вполне можно (я как раз на этом этапе сейчас). А вот для шести карт и больше ? Для произвольного количества карт я досчитался до фула сверху, но фул осилить не могу. Может быть у кого-то есть идеи именно по написанию этой функции для 6 и более карт ? |
0 |
14.04.2004, 07:56 TS | #13 (permalink) | |
Ветеран
Регистрация: 12.02.2004
Адрес: Россия, УРФО
Сообщений: 1,399
|
Приветствую!
2 NoSound Цитата:
__________________
Mariner Западное полушарие Марса рассечено на протяжении 4 000 км вдоль экватора рифтовыми долинами Маринер - крупнейшим поясом разломов на планете. |
|
0 |
14.04.2004, 11:45 | #14 (permalink) |
Незнакомец
Регистрация: 13.04.2004
Сообщений: 17
|
Добрый день
Наша функция должна оценивать вероятности комбинаций. Я считаю количество различных вариантов которыми можно собрать каждую конкретную комбинацию. Скажем для начальной раздачи карт число комбинаций на каре равно 13*48 - это просто. Но в нашем случае нужно учитывать, что мы можем обменивать не все карты + то что часть карт может быть вне игры, скажем карта дилера. Вот для этого последнего случая, то есть когда все нефиксировано и задается как входящие параметры, у меня получилось найти вероятности для стрейт-флеша,каре,флеш-рояля а для фула уже не получается. Впринципе конечно можно осилить, но уж больно много получится там вложенных циклов. Как-то бы красиво сделать, да чтоб побыстрее работало |
0 |
14.04.2004, 13:18 | #15 (permalink) |
Интересующийся
Регистрация: 20.03.2004
Адрес: Москва
Сообщений: 75
|
Я опять о своем. Мы же не научную диссертацию делаем, а хотим положительную игру уметь найти и выигрышную стратегию для нее получить.
Вот для пяти карт я сделал все расчеты по формулам. Теперь за шесть взялся. Сложно, но сделаю потихонечьку и для шести. Ну, даже если и такую глобальную цель ставить - универсальный алгоритм сделать - все равно решение частного случая может помочь в понимании проблемы. Вот сделаю для шести. Понадобиться - для 7-и. Потом и общий случай сам собой может родиться. Вот другая проблема есть, на мой взгляд еще более серьезная. Это повторный обмен. Там как без перебора обойтись у меня даже идеи нет. Хорошо в нашем любимом шестикарточном с покупкой и обменом. Там 46 вариантов покупки можно перебрать, а дальше опять по формулам. А если есть повторный обмен после обмена 2-х, 3-х или 5-карт? Тут никакой перебор не тянет. А есть ведь и такие игры. |
0 |
14.04.2004, 14:23 | #16 (permalink) |
Незнакомец
Регистрация: 13.04.2004
Сообщений: 17
|
Абсолютно согласен со сложностями при повторном обмене!
Иначе как полным перебором я тоже выхода не нашел, к счастью мне нужно было только при первом обмене 1 карта, получилось меньше 1сек. Для 2х и более будет считать часами. |
0 |
28.04.2004, 14:24 TS | #17 (permalink) |
Ветеран
Регистрация: 12.02.2004
Адрес: Россия, УРФО
Сообщений: 1,399
|
Приветствую!
Люди! Используйте профайлер. Посмотрел в профайлере на время занимаемое выполнением моей основной процедуры расчета. Оказалось, что 60% времени занимает вызов такой безобидной функции как расчет числа сочетаний. // ×èñëî ñå÷òàíèé èç N ïî M function C(N, M: integer): integer; var a,b,c,d: real; begin a:=N; b:=M; c:=1; d:=b+1; while (d<=a) do begin c:=c*d/(a-d+1); d:=d+1; end; Result:=Round(c); end; После оптимизации кода путем замены вызова этой функции на обращение к заранее посчитанному массиву, вызов функции расчета числа сочетаний сократился до 5%. Соответственно время расчета обмена 5 карт без учета сжатия по мастям сократилось с 2,5 минут до 22 секунд. Выигрыш в скорости почти в 7 раз!
__________________
Mariner Западное полушарие Марса рассечено на протяжении 4 000 км вдоль экватора рифтовыми долинами Маринер - крупнейшим поясом разломов на планете. |
0 |
01.05.2004, 00:19 | #19 (permalink) |
Бессмертный
Регистрация: 30.04.2004
Сообщений: 3,612
|
А вообще, для чего использовать плавающую арифметику там, где прекрасно можно обойтись без нее??? Это же... все равно, что чесать левой ногой правое ухо. Или забивать гвозди микроскопом.
Навскидку, целочисленная функция должна работать раз в 20 быстрее.
__________________
Arthur Grey |
0 |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Разбор раскладов успешных игроков | kesey | Limit Holdem, Omaha, 7-Card Stud и другие виды покера | 42 | 29.06.2008 21:36 |
как ускорить игру? | prokrusto | Покер один на один | 9 | 12.02.2008 00:36 |
"Тестер" для раскладов в Покере. | CLON | Казино софт | 14 | 14.11.2007 09:39 |
Расчет вероятностей событий в покере. | Murk | Теории, стратегии, основы покера | 20 | 03.07.2005 22:07 |
Расчет дисперсии при ОС на покере | joker50 | Покер против казино | 5 | 06.04.2004 21:41 |
|
|