Дневник крипто-трейдера.

580
Статистика
Статистика
580
  • 500+
    подписчиков
Статистика темы
  • Популярность
    Топ-126
  • Постов
    2,921
  • Просмотров
    519,281
  • Подписок
    580
  • Карма автора
    +19,012
1 143 144 145 146 147
  •  Galax, Так мне надо не ранг 7 карт определить, а силу руки в конкретной ситуации, здесь нельзя переставлять карты произвольно. Переставлять только можно 2 в руке и 3 на флопе, порядок остальных важен. И мне не только надо определить скажем флеш у меня но и знать спарена ли доска, стритовая она пришел ли флеш с флопа, терна или на ривере и прочее, это важно для принятия решения. И всего таких ситуаций 10**9, поэтому запихать в 130Мб не получится.

    Ответить Цитировать
    15/41
    + 1
  •  divs31, Извини, есть вопрос к расчетам, точнее к методике.

    Вот у тебя есть какой-то расклад.

    Назовем их (А):

    --

    АсТс9s

    6h6c

     

    и (В):

    --

    АсТс

    6h6c9s

     

    Ты формируешь последовательно игру на каждом подъеме отдельно (например приходит 3 карты, как-то их кладешь, потом еще 3 карты, их кладешь и так до конца)

    или берешь 4*3 = 12 карт сразу и пытаешься их положить на линии?

    Я пытался реализовать оба варианта.

     

    Если используешь первый способ: как ты узнаешь лучших ход на каждом подъёме? Тоже Монте-Карло?

    Ответить Цитировать
    22/38
    + 1
  • Galax @ 20.04.26 

    . Но это уже не проблема программиста, а проблема игрока - как он оценивает фантазию.

    Цена фантазии тоже считается.

    Ответить Цитировать
    16/41
    + 1
  •  Jak, у меня есть так называемое "быстрое решение",  т.е. оценка руки вот таким способом

    Jak @ 20.04.26  

    или берешь 4*3 = 12 карт сразу и пытаешься их положить на линии?

    Основное решение - это берем все возможные расклады и для каждого считаем скажем 10000 раз. 10000 колод для всех одинаковые, дальше ход переходит к следующему игроку, ему сдаются на фронт карты, он их раскладывает по всем возможным комбинациям, оценивает быстрым решением, выбирает лучшее, ход переходит к следующему и так до конца. Не обязательно считать все расклады 10000 раз. Они все считаются параллельно и те расклады кто "сильно" отстают выкидываются.

    Ответить Цитировать
    17/41
    + 1
  • divs31 @ 20.04.26 

     Galax, Так мне надо не ранг 7 карт определить, а силу руки в конкретной ситуации, здесь нельзя переставлять карты произвольно. Переставлять только можно 2 в руке и 3 на флопе, порядок остальных важен. И мне не только надо определить скажем флеш у меня но и знать спарена ли доска, стритовая она пришел ли флеш с флопа, терна или на ривере и прочее, это важно для принятия решения. И всего таких ситуаций 10**9, поэтому запихать в 130Мб не получится.

    Возможно ты не до конца понял как это работает.

    Вот есть у нас 7 карт (5 на столе и 2 в руках). Мы вводим в массив эти 7 карт и получаем на выходе какое-то число, которое соответствует этим 7 карт. И предварительно мы расчитали всю нужную нам инфу, что делать с этими 7 картами.

    По умолчанию там находится такая инфа - определяется какие лучшие 5 карт можно выбрать из этих 7 и определяется ранг такой комбинации. Повторюсь - никаких дополнительных рассчетов не нужно делать, там есть сразу наша комбинация по правилам холдема. У оппа тоже есть 7 карт (свои 2 в руке и общие 5 карт борда) и для него тоже сразу определяется лучшая комбинация (ранг его карт). Далее просто сравниваются эти два ранга - у кого больше, тот и выиграл.

    Но ничего нам не мешает сделать предварительные расчеты для этих 7 карт и сохранить нужную инфу в этом массиве (одна ячейка 32 бита). Если нам нужно больше места чем 32 бита, то можно пойти еще дальше.

    В этих конечных ячейках (где был раньше 32-битовый ранг карт) можно хранить индекс для другого массива (индекс, который соответствует 7 картам). А этот другой массив может хранить инфу любого размера, хоть какой-структуры.

    Допустим нам нужно 8 байт для хранения такой инфы, тогда этот другой массив будет длиной не 130мб, а в два раза больше.

    Что все равно намного меньше, чем 20 гб и нахождение этого индекса будет очень быстрым - 7 обращений в массив и 7 операций сложения).

    Кроме этого в этом оригинальном массиве HR7, в узлах которые соответствуют 5 картам и 6 картам, тоже можно хранить инфу.

    Т.е для флопа и терна можно тоже предварительно сделать расчеты и хранить их в этом массиве.

    Когда мы попадаем в узел, который соответствует 5 картам, то следующие 52 ячейки содержат адреса соответствующие карте, которая придет 6-ой. Т.е. со смещением от 1 до 52 от этого адресса есть ссылки куда прыгать дальше. А вот в адрессе со смещением 0 - пока ничего нет. Поэтому в эту ячейку можно сохранить нужную инфу, которая относится к этим 5-ти картам.

     

    Короче, это крутая идея как сжать огромный 7-ми мерный массив в одномерный массив разумного размера. А инфу можно там хранить любую. И доступ к этой инфе делается максимально быстро.

    Ответить Цитировать
    1039/1054
    + 1
  • 200К расчетов практически не изменили картины. точность +-0.03 AT или A9 на middle практически равны

    Ответить Цитировать
    18/41
    + 1
  • divs31 @ 20.04.26  

    ему сдаются на фронт карты, он их раскладывает по всем возможным комбинациям, оценивает быстрым решением, выбирает лучшее

    Интересно как он "оценивает быстрым решением" если например всего 5+2=7 карт на линиях?

    divs31 @ 19.04.26  

    И тот же Gipsy  по моему калькулятору учился

    И Gipsy учился по калькулятору, который для оценки хода берет только, пусть даже не 10к, а 100к колод?

    Это просто <0,0002% от всех вариантов. Даже если не будем играть за оппов, это примерно С(47,12)~5*10^10.

    И еще каждый вариант можно положить от 6 до 9 разных случаев.

     

    Аналогия из холдема. Мы имеем двух игроков. До флопа пошли в оллин. Вскрылись. У одно АКs, у другого 72о.

    Вопрос: каковы шансы на победу первого? Каково его EV?

    Сколько имеем вариантов флопов до ривера? С(48,5)=1712304. А с учетом, если нет флеш-дро, даже меньше.

    Но пусть!

    Мы возьмем 0,0002% флопов. Это ровно 3 раза.  И на флоп 2 раза приходит 2!!! 

    Мы делаем вывод - 72о старше! EV AKs=33%. И говорим Gipsy: до флопа АКs - гавно, а вот 72о - крутяк!

     

    divs31 @ 18.04.26  

    я думаю что написал первый хороший калькулятор по китайскому покеру, если не в мире, то во всяком случае в России)). По нему обучались многие наши ведущие игроки за плату.

      

    Ответить Цитировать
    23/38
    + 1
  •  Galax, Да понял я как ты хранишь, только разница в том, что у тебя 30 млн ситуаций, а у меня 1 млрд. Ты какие-то ситуации воспринимаешь как одна и та же, а у меня они разные. Например рука AsKd  стол 6d7d5sJhTh  и такая же рука со столом 6d7c5sJhTh у тебя в одну ячейку попадет?

    Ответить Цитировать
    19/41
    + 2
  • Jak @ 20.04.26 

    Интересно как он "оценивает быстрым решением" если например всего 5+2=7 карт на линиях

    Jak @ 20.04.26 

    или берешь 4*3 = 12 карт сразу и пытаешься их положить на линии?

    Ты же писал такой вариант. Вот подобный  и есть быстрое решение. Только для каждой улицы будет свое количество карт

    Ответить Цитировать
    20/41
    + 1
  • divs31 @ 20.04.26  

    Например рука AsKd  стол 6d7d5sJhTh  и такая же рука со столом 6d7c5sJhTh у тебя в одну ячейку попадет?

    Конечно, чем они отличаются?

     

    divs31 @ 20.04.26 

    Ты же писал такой вариант

    Писать-то я писал, потому и спрашиваю, потому что этот метод барахло.

    Ответить Цитировать
    24/38
    + 1
  •  divs31, Да, для обычного холдема - это один и тот же ранг карт.

    Я понял о чем ты. Типа в первом раскладе на флопе есть флеш-дро, а во втором - нет.

    Не знаю правда, что с этой инфой делать, но не суть.

    В принципе, можно составлять массив по своим правилам и эти две ситуации считать разными и далее ссылаться на разные ячейки памяти. Это довольно геморройно и финальный массив выйдет намного больше, но сжатие думаю будет все равно приличное. Но это если очень хочется заморочится. А если у тебя все нормально работает и держать 20 гб оперативки - это не проблема, то тогда игра не стоит свеч.   

     

    Вот для китайского покера ничего такого не нужно. И массив с 30мб со всем прекрасно справляется.

    Ответить Цитировать
    1040/1054
    + 1
  • Jak @ 20.04.26 

    Аналогия из холдема.

    Никакой аналогии близко нет. 

    У нас есть миллиард пылинок. чтобы вычислить средний вес пылинки не надо взвешивать весь миллиард или близкое по порядку число. Достаточно взвесить 1000 вычисляя при этом дисперсию. Если дисперсия низкая(все пылинки примерно одинакового веса) то тысячи хватит за глаза.

    а теперь у нас есть 1000 булыжников совершенно разного размера и ты высмеивая мой метод говоришь берем один булыжник это даже больше в пропорции чем в первом случае и вот он "средний вес" - ха-ха-ха. Дисперсия у тебя какая, когда ты взял три случая на флопе?

    Ответить Цитировать
    21/41
    + 1
  • Про 5*10^10 это только про кол-во колод для одного игрока, если других не рассматривать.

    А ведь еще и каждую колоду можно разложить до конца еще примерно 720к вариантами.

    На первом подъеме положить из трех карт 2 девятью способами, потом взять другие 2 карты, потом остальные. Итого только тут 27 вариантов. Их надо как-то оценить и выбрать лучший.

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

     

    Почему он решил, что "вот этот ход" - самый лучший?

     

    И еще солвер успевает посчитать роялти оппонентов?

    Ответить Цитировать
    25/38
    + 1
  • Galax @ 20.04.26 

    Не знаю правда, что с этой инфой делать, но не суть.

    В финальной руке оппа в первом случае будут недошедшие флеш-дро, во втором их нет и твоя рука во втором случае слабее

    Ответить Цитировать
    22/41
    + 1
  • Миллиард пылинок имеет примерно одинаковые пылинки.

     

    Возможно для некоторой точности не надо все взвешивать.

     

    Но в китае пылинки размерами от молекулы до кирпича.

    Очень легко положить скуп себе, а можно собрать фанту.

    Вот и выходит, что имеем миллиард*миллиардов пылинок/кирпичей. Три больших куба, километр на километр на километр.

    И те пылинки, которые ты возьмешь и взвесишь будут совсем разные. И их вес не обязательно будет равен весу для оценки веса всего куба.

    Ответить Цитировать
    26/38
    + 1
  • Jak @ 20.04.26 

    Писать-то я писал, потому и спрашиваю, потому что этот метод барахло.

     

    Jak @ 20.04.26 

     

    Ты формируешь последовательно игру на каждом подъеме отдельно (например приходит 3 карты, как-то их кладешь, потом еще 3 карты, их кладешь и так до конца)

    или берешь 4*3 = 12 карт сразу и пытаешься их положить на линии?

    Я пытался реализовать оба варианта.

     

    Теперь ты берешь первый вариант и используешь второй в качестве "быстрого решения". Потом берешь рассматриваешь те "быстрые решения", которые сильно расходятся с первым вариантом- "медленным" и правишь их так, чтобы это расхождение снизить, потом снова пересчитываешь и так несколько итераций - солвер готов! ))

    Ответить Цитировать
    23/41
    + 1
  •  Jak, так я же не зря приводил дисперсию

    Ответить Цитировать
    24/41
    + 1
  •  Jak, Справедливости ради, хочу стать на защиту нашего коллеги.

     

    10К вариантов расчета вполне достаточно чаще всего. Если вы делаете несколько раз такие расчеты по 10К и каждый раз результаты выходят одни и теже (с отклонением в 0.1 куша от среднего), то можно считать что погрешность таких вычислений 0.1 куша и она нас устраивает.

    Вот если бы результаты каждый раз были рандомными и гуляли туда-сюда на 1 куш и более, то тогда можно было бы говорить, что результат не релевантный. 

     

    В своем алгоритме я задаю к-во итераций в основном цикле и к-во итераций, которые делаю в каждом внутреннем цикле (когда нужно быстро выбрать наиболее вероятный расклад пришедших карт во внутренних циклах).

    Обычно хватает таких параметров 2000 на 200.

    Если есть очень близкие по ЕВ лучшие варианты, то тогда пересчитаю еще раз с параметрами 5000 - 500 или 10 000 - 1000.

    Это займет больше времени, но результат будет более точным и погрешность не будет больше 0.1 куша.

    Можно было бы дальше работать над распараллеливанием, покупать более мощные компы и т.д. Но я перестал этим заниматься и в будущем не собираюсь.

    Ответить Цитировать
    1041/1054
    + 1
  • Врать не буду.

    Моя прога не может точно посчитать стартер с учетом роялти оппов.

     

    Но для 2-х и 3-х игроков если у оппов есть по 9 карт и у меня есть 7 карт + 1 в сбросе, мне дали второй подъем. 

     

    С этого момента я могу абсолютно точно! с учетом всех вариантов оппов и моих посчитать роялти для любого хода.

    Считаю ВСЕ возможные варианты оппов и свои, сравниваю их и считаю роялти. Причем свои и варианты оппов меняются в зависимости от хода других.

     

    Мои данные совпадают с солвером Олега. Совпадают не только по месту хода в списке, а по кушам.

    Ответить Цитировать
    27/38
    + 1
  • Jak @ 20.04.26 

    И еще солвер успевает посчитать роялти оппонентов?

    Ну если ты все равно раскладываешь до конца, то это не трудно. Но вообще вычислительные мощности надо серьезные. Потому что "быстрое решение" не такое уж и быстрое)) Для игры в реальном времени, сначала использовали 2 компа, потом 4 сначала с 8-ядерными процами, потом 16

    Ответить Цитировать
    25/41
    + 1
1 143 144 145 146 147
1 человек читает эту тему (1 гость):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.