Базар вокруг игры / Комп в помощь / Ускорить расчет раскладов в покере...
  Страницы(4): [ «  <  #  1  2  3  4  >  »]   Перейти вниз
Re: Ускорить расчет раскладов в покере...   ID:23805   ответ на 23702 Вт, 15 июня 2004 06:56 («] [#] [»)
Mariner Форумы CasinoGames
Приветствую!

Сейчас что-то не сооброжу что NoSound c Korovin написали, но циферками своими поделюсь.

AC, 3.03628995428793 / 9C, 3.08884905679648 / 0.993994546067347

Флэши считаю точно, больше/меньше/равно.

Что еще вспомню, напишу.
        
 
Re: Ускорить расчет раскладов в покере...   ID:23806   ответ на 23702 Вт, 15 июня 2004 11:11 («] [#] [»)
korovin Форумы CasinoGames
По точности. Предлагаю равнятся на Маринера.

По покупке игры. Возьми тестовую задачу: У тебя 4 туза, у дилера допустим 7. +МО покумки инры по упрощенной модели считается на пальцах. Сравни решение со своим.

По симуляции. Если перебрать все варианты руки против всех КД, мы и получим абсолютно точное МО. Это чуть более 100 миллионов раздач. Можно и здесь применить сжатие мастей, будет немного меньше. Эту идею я и заложил в свои циклы, так как нас нтересует не только первый бокс, кроме того есть игры типа 12345, 1+1 или 2+1, 6+6 или 6+5, которые считаются на порядок дольше обычных
        
 
Re: Ускорить расчет раскладов в покере...   ID:23807   ответ на 23702 Вт, 15 июня 2004 12:05 («] [#] [»)
NoSound Форумы CasinoGames
Korovin писал(а) вт, 15 июня 2004 12:11
По симуляции.
У меня получается не 7462, а 3094 - это число возможных комбинаций 5 карт игрока если считать все масти одинаковыми. Если брать 3094 действительно получается несмещенная оценка, схождение будет более быстрое за счет уменьшения эффективной диспресии. Думаю раза в 4-5 быстрее будет.

Еще я не понял как ты формируешь цикл для нескольких боксов, в этом случае цифра 7462 должна сильно возрасти, примерно [7462*7462 - поправка на недостижимые комбинации] для двух боксов.
        
 
Re: Ускорить расчет раскладов в покере...   ID:23808   ответ на 23702 Ср, 16 июня 2004 05:55 («] [#] [»)
Mariner Форумы CasinoGames
Приветствую!

2 Korovin & NoSound

Поясните идеи насчет циклов. Читаю, читаю и не врубаюсь. Smile

ЗЫ. Как обычно можно по e-mail или ЛС.
        
 
Re: Ускорить расчет раскладов в покере...   ID:23809   ответ на 23702 Ср, 16 июня 2004 10:31 («] [#] [»)
NoSound Форумы CasinoGames
2 Mariner. Как я понял. Симуляция раскладов у нас начинается со случайного выбора карт игрока и КД. При этом случайном выборе мы действуем прямо так, как на самом деле происходит, и получаем в итоге дисперсию результатов - настоящая дисперсия (НД). Тут же замечу, что скорость расчета обратно пропорциональна квадрату дисперсии. Korovin же разбил все возможные начальные расклады на группы, с целью уменьшить дисперсию и увеличить скорость. Группы выбрал следующим образом - каждая группа содержит фиксированное число карт игрока каждого из достоинств. Скажем группа "две 9ки, две 10ки и туз". То есть от такой группы до расклада еще нужно определиться с мастями(сжатие по мастям). Таких групп всего 3094, если я правильно посчитал. У каждой группы есть своя вероятность выпадения. Она очень легко считается, для примера выше равна 6*6*4. Теперь в цикле на каждую группу уделяем какое-то число раскладов, случайным образом выбирая масти и КД. Можно не 1, а 2-3 в зависимости от вероятности группы. Таким образом сформировали цикл, по которому и пробегаем много-много раз. Общее МО считаем по вероятносте каждой группы, перемноженной с МО внутри группы. В чем смысл? Дело в том, что таким образом мы уменьшаем эффективную дисперсию(ЭД) результатов. Если в каждой группе дисперсия будет равна НД, то ЭД будет равна НД. Но если в группах дисперсия будет меньше НД, а так и будет, то ЭД сильно уменьшится. А значит скорость увеличится в квадрат умеьшения диспресии раз.
Почему в группе дисперсия будет меньше НД ? Потомучто информация "две 9ки, две 10ки и туз" во многом уже предопределяют результат, и он будет иметь гораздо меньшие отклонения, чем в общем случае.
п.с. Многое в описанном выше алгоритме можно еще улучшать ...
        
 
Re: Ускорить расчет раскладов в покере...   ID:23810   ответ на 23702 Чт, 17 июня 2004 00:43 («] [#] [»)
korovin Форумы CasinoGames
У меня получилось так: каре, фулл по 156, троек, 2 пары по 858, пар 2860, беспарных 1287, плюс столько же флешей я выделил отдельно для уменьшения дисперсии результата. По идее можно пары и беспарки еще разбить на 4, 3, 2 одной масти. Я обхожу это случайной генерацией мастей в каждом цикле. Можно включить в цикл и перебор карты дилера. Если бы кто-нибудь вывел аналитически оптимальное соотношение размера цикла - скорости схождения, был бы признателен
        
 
Re: Ускорить расчет раскладов в покере...   ID:23811   ответ на 23702 Чт, 17 июня 2004 01:18 («] [#] [»)
BUGy Форумы CasinoGames
Приветствую всех участников форума.

Сам я считаю перебором, и до недавнего времени спсоб увеличения скорости расчётов видел лиш в увеличении тактовой частоты и кэша процессора, а об обмене пятака даже и не мечтал. И в рамках начатой темы для начала хотел-бы спросить чем лучше пользоваться для изучения комбинаторики.
И ещё вопросик, для увеличения скрости расчётов в 5+1-1+1 я не веду переоценку массива диллерских комбинаций при покупке и обмене, чем, как я считаю, отбрасываю наиболее дисперсионные решения с небольшой потерей МО. Так ли ето?
        
 
Re: Ускорить расчет раскладов в покере...   ID:23812   ответ на 23702 Чт, 17 июня 2004 03:34 («] [#] [»)
korovin Форумы CasinoGames
Насчет дисперсионных решений ты имееш ввиду купить вскрышку?

Без ТК при покупки 1-й карты вскрышка прийдет в трех случаях из 46. Без переоценки ты считаеш пас (-1 анте) При точном расчете стэй (-0.84 анте). Потери только на этом 0.16*3/46=0.01.
        
 
Re: Ускорить расчет раскладов в покере...   ID:23813   ответ на 23702 Чт, 17 июня 2004 08:48 («] [#] [»)
BUGy Форумы CasinoGames
Да именно это я и имел ввиду, только подобную оценку я сделал и сам посчитав с переоценкой и без неё. Мне интересно сильно ли я теряю в общем МО игры. А его без комбинаторики моими методами подсчитать нереально долго. Поэтому повторяясь хочу спросить, чем можно воспользоваться для изучения комбинаторики, можно на мыло.
        
 
Re: Ускорить расчет раскладов в покере...   ID:23814   ответ на 23702 Чт, 17 июня 2004 11:25 («] [#] [»)
NoSound Форумы CasinoGames
Korovin писал(а) чт, 17 июня 2004 01:43
У меня получилось так: каре, фулл по 156, троек, 2 пары по 858, пар 2860, беспарных 1287, плюс столько же флешей я выделил отдельно для уменьшения дисперсии результата.
Хорошее разделение. А есть ли какие-нибудь идеи как этот метод на 2 и более боксов распространить ? Все-таки 1 бокс лишь частный случай, если получиться придумать для общего случая, то это будет большой скачок по скорости схождения.

Какая твоя оценка, во сколько раз быстрее работает, чем переборный алгоритм ?
        
 
Re: Ускорить расчет раскладов в покере...   ID:23815   ответ на 23702 Чт, 17 июня 2004 13:13 («] [#] [»)
BUGy Форумы CasinoGames
Прветствую всех.
Не уверен что подскажу правильно, т.к. не до конца понимаю идею метода. Но мне кажется на два и более бокса его можно применить следующим образом. Не считать каждый бокс, а рассмотреть один бокс с учетом знания карт соседних, т.е. пересчитать насколько повысит МО в каждой группе(в основном группе беспарных) знание дополнительных вышедших карт.
        
 
Re: Ускорить расчет раскладов в покере...   ID:23816   ответ на 23702 Чт, 17 июня 2004 13:37 («] [#] [»)
Mariner Форумы CasinoGames
Приветствую!

Цитата:
Хорошее разделение. А есть ли какие-нибудь идеи как этот метод на 2 и более боксов распространить ? Все-таки 1 бокс лишь частный случай, если получиться придумать для общего случая, то это будет большой скачок по скорости схождения.

Какая твоя оценка, во сколько раз быстрее работает, чем переборный алгоритм ?
В общем как себе представляю это дело я. Применяем сжатие по мастям к картам игрока также как мы и делали это для карт дилера.

Для нескольких боксов переоценку числа комбинаций и их вес можно производить динамически. Что, в принципе, у меня и сделано при обмене 5 карт. Кроме того, все эти динамические перерасчеты можно просчитать заранее для всех возможных случаев в таблички. По этому пути я сейчас и начинаю идти. Проблемы возникают при оценке числа комбинаций больше/меньше. Но думаю, что это можно сделать алгоритмически. Так, например, чтобы посчитать число пустых комбинаций для любого числа вышедших карт необходимо всего лишь несколько табличек, общим объемом примерно 32 килобайта. По скорости сейчас ничего не могу. Как закончу реализацию, напишу. Cool

Теперь о следующем важном шаге - разработка стратегий. Вот научились мы быстро (очень быстро, хотя не все Smile ) считать МО игры для заданных правил. Как быть с разработкой стратегий?

Скорее всего, дело обстоит так. Для оценки МО игры используем одни алгоритмы. (Программа симулятор) Для разработки стратегии используем другие (без сжатия по мастям карт игрока). (Программа тренажер).

ЗЫ. Блин, научите меня, как сделать так, чтобы при цитировании указывалось в рамке чья это цитата. (Какую нажать кнопку?) Confused
        
 
Re: Ускорить расчет раскладов в покере...   ID:23817   ответ на 23702 Чт, 17 июня 2004 14:58 («] [#] [»)
NoSound Форумы CasinoGames
2 BUGy
Нет, так не получится. Для каждого первого бокса будут свои результаты на втором.
2 Mariner
Не понял насчет табличек, давай поподробнее. Кнопка "цитата", там просто пишешь типа <quote title=Mariner писал>
        
 
Re: Ускорить расчет раскладов в покере...   ID:23818   ответ на 23702 Чт, 17 июня 2004 19:10 («] [#] [»)
korovin Форумы CasinoGames
Цитата:
Не считать каждый бокс, а рассмотреть один бокс с учетом знания карт соседних, т.е. пересчитать насколько повысит МО в каждой группе(в основном группе беспарных) знание дополнительных вышедших карт.
Разумеется. Я так и считаю. Какая нам разница что на соседних боксах, каре на каждом или пустые на этих каре. на схождение МО число открытых боксов влияет слабо, поэтому их можно сдавать случайно. Нас ведь интересует только какие карты вышли, вернее как правило только карты одного-двух номиналов. Прще говоря нет смысла считать МО за два бокса сразу, если достаточно знать МО одного бокса, на втором будет такое же. Не путать с номер бокса с числом известных карт!
        
 
Re: Ускорить расчет раскладов в покере...   ID:23819   ответ на 23702 Чт, 17 июня 2004 19:35 («] [#] [»)
NoSound Форумы CasinoGames
Korovin писал(а) чт, 17 июня 2004 20:10
Разумеется. Я так и считаю.
А при чем здесь твои циклы ? Вроде о них речь то.
        
 
Re: Ускорить расчет раскладов в покере...   ID:23820   ответ на 23702 Чт, 17 июня 2004 19:42 («] [#] [»)
NoSound Форумы CasinoGames
Все, понял. Извините.

Вложение: BS5i.bj1
(Размер: 11.97KB, Загружено 168 раз)
        
 
Re: Ускорить расчет раскладов в покере...   ID:23821   ответ на 23702 Пт, 18 июня 2004 06:17 («] [#] [»)
Mariner Форумы CasinoGames
Приветствую!

NoSound
Не понял насчет табличек, давай поподробнее.
В общем вчера закончил реализацию расчта пустых комбинация через таблицы при игре дилера от ТК. Результат меня разочаровал. Скорости не прибавилось, а наоборот даже убавилось. Smile Может что не так сделал.

Идея следующая.
Всего пустые комбинации получаются из 1113 пяти ранговых комбинаций. Поэтому значения рангов заранее извеcтны и их можно поместить в массив [1..1113][1..5].
Далее. Значенни каждого ранга карты меняется от 0 до 4, т.е. 0 нет карт в ранге .. 4 все карты есть в ранге.
Число пустых комбинаций в заданной пятикарточной комбинации получается перемножением числа свободных карт в ранге n1*n2*n3*n4*n5. Эти произведения тоже можно посчитать заранее и поместить в массив с числом элементов 5^5=3125 вида [0..4,0..4,0..4,0..4,0..4].
Теперь осталось посчитать возможные флэши, тоже в виде таблички, с числом элементов 2^13=8192.
Далее расчет очень прост.

цикл от 1 до 1113
суммируем число пустых комбинаций
конец

от 1 до 4
вычитаем флэши
конец

Вот и все.

Зы. Кто сможет реализовать шустро, велкам в мыло с исходником. Smile
        
 
Re: Ускорить расчет раскладов в покере...   ID:23822   ответ на 23702 Вт, 22 июня 2004 16:13 («] [#] [»)
joker2k1 Форумы CasinoGames
приветствую!

ну у меня после недельных раздумий и недельной реализации задуманного получилось что теперь МО обмена пяти карт считается за 1 сек. (т.е. то, что раньше считалось за час). Т.е. прогресс на лицо.
считается все точно, без упрощений. без сжатий Smile
объяснил бы кто, как считать со сжатием, не понятно как учитывыть вышедшие карты в сжатой таблице.

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

пишу на VC++.

p.s. я смотрю после того как я сюда последний раз написал добавилось много чего нового и все довольно инофрмативно. спасибо вам за это.
        
 
Re: Ускорить расчет раскладов в покере...   ID:23823   ответ на 23702 Ср, 23 июня 2004 06:37 («] [#] [»)
Mariner Форумы CasinoGames
Приветствую!

2 joker2k1
Прими мои поздравления. Довольно шустрый у тебя получился рассчет обмена 5 карт. Напиши на каком оборудовании считаешь.
Опиши идею/алгоритм реализации. Можно по e-mail или ЛС.

2 Сам себе
Похоже придется переписывать под С/C++. Smile Присоветуйте нормальный компилятор.
        
 
Re: Ускорить расчет раскладов в покере...   ID:23824   ответ на 23702 Ср, 23 июня 2004 11:09 («] [#] [»)
joker2k1 Форумы CasinoGames
2Mariner:

считаю на p4-2400.
это на самом деле не шустро. все тормозит изза того что возможных замен ~1300000 и для каждой из них надо оценить игру. моя процедурка оценивает примерно 1,5млн в сек комбинаций игрока с комбинациями дилера(выдает профит игры для заданной комбинации). вот и получается что около секунды.

идея... ну тупое оптимизированное сравнение Smile с учетом специфики задачи и особенностей расчета (выкидывание критичных мест в таблицы).

если бы вот соптимизировать генерацию замен, например пожать какнть эту таблицу(пожать ее можно), но чтобы все равно с помощью какогонть алгоритма точно расчитывать игру (чтобы не сравнивать невозможные комбинации). вот счас на этой стадии нахожусь. есть пара-тройка идей Smile думаю их Smile
        
 
Страницы(4): [ «  <  #  1  2  3  4  >  »]  
Предыдущая тема:2Реактор
Следующая тема:Предложение
Быстрый переход к форуму
  
Текстовая версия  RSS лента
Вернуться вверх

Текущее время: Сб, 30 ноября 07:11:47 2024
Время, затраченное на генерацию страницы: 0.02407 секунд