Регистрация
Регистрация Поиск Сообщество  
CGM > Казино > Казино софт
Опции темы

Soft Speed Test (покер)

Важные объявления
Старый 25.03.2007, 07:12   #101 (permalink)
Участник
 
Регистрация: 13.10.2004
Сообщений: 165
Считает быстро, только с ошибками ))
Посмотри при большем кол-ве выкинутых карт чем 10 например. У меня и Grey совпадает, твое решение - новый вариант.
Fabrica вне форума      
Старый 25.03.2007, 08:41   #102 (permalink)
Бессмертный
 
Аватар для Grey
 
Регистрация: 30.04.2004
Сообщений: 3,612
Цитата:
Сообщение от Fabrica писал
Считает быстро, только с ошибками ))
Посмотри при большем кол-ве выкинутых карт чем 10 например. У меня и Grey совпадает, твое решение - новый вариант.
да нет, вроде бы сходится... Только у него тузы "неправильно" расположены, может быть из-за этого у тебя так получилось
__________________
Arthur Grey
Grey вне форума      
Старый 25.03.2007, 13:17   #103 (permalink)
Бессмертный
 
Аватар для korovin
 
Регистрация: 13.02.2004
Адрес: Россия
Сообщений: 3,027
Цитата:
Сообщение от Цитата:
Короче гроб.. В лучшем случае будет в 210 (C{5,4} * C{42,1}) раз дольше Кто интересно будет ждать 3.5 часа?
Разве это не повод увеличить скорость еще раз в 100?
korovin вне форума      
Старый 25.03.2007, 13:30     TS Старый   #104 (permalink)
Ветеран
 
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
Цитата:
Сообщение от Fabrica писал вс, 25 марта 2007 06:12
Считает быстро, только с ошибками ))
Эээ. Я бы попросил повнимательнее...
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883
Sharky вне форума      
Старый 25.03.2007, 13:40     TS Старый   #105 (permalink)
Ветеран
 
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
Цитата:
Сообщение от Korovin писал вс, 25 марта 2007 12:17
Цитата:
Сообщение от Цитата:
Короче гроб.. В лучшем случае будет в 210 (C{5,4} * C{42,1}) раз дольше Кто интересно будет ждать 3.5 часа?
Разве это не повод увеличить скорость еще раз в 100?
Ну это вряд ли. Процентов 5-10% еще выжать можно.. Остальное только всякими сжатиями мастей и прочими хитростями.. Плюс нужен Int128
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883
Sharky вне форума      
Старый 25.03.2007, 19:05   #106 (permalink)
Участник
 
Регистрация: 13.10.2004
Сообщений: 165
Да, прошу прощения не заметил, что тузы в начале, а не в конце как у меня и Grey.
Fabrica вне форума      
Старый 26.03.2007, 14:01   #107 (permalink)
Новичок
 
Регистрация: 06.03.2007
Адрес: Москва
Сообщений: 27
Мой тест тоже готов. Лучше Sharky 13 ranks в 2,4 раза, 45 cards в 2,3 раза. Если откомпилировать в MVS, то получается еще в 1,3 раза быстрее (я делал консольное приложение), чем в Builder6. Честно не использовал сжатия мастей. Мог бы даже вынести подсчет маски флеша из внутреннего цикла, тоже касается номера профиля, но я этого не делал. (Профиль - количества 0,1,2 и 3 свободных карт на всех рангах, кроме ранга КД, всего их 1820.)
Название: snap.gif
Просмотров: 527

Размер: 33.7 Кб

Цитата:
Сообщение от Korovin писал вс, 25 марта 2007 13:17
Разве это не повод увеличить скорость еще раз в 100?
Полностью присоединяюсь - за счет сжатия мастей. При мене 1 карты можно убыстрить в 17 раз, 2 карт - в 113 раз, 3 - в 333 раза, 4 - в 448 раз, 5 карт - в 221 раза, 1+1 карты - в 569 раз, 2+1 - в 5004 раза. Я не шучу. Флеши считаются очень быстро, саршинство комбинации у меня считается сейчас в 1,9 раза быстрее, чем оболочка теста+ расчет нет игры (усредняя по всем игровым комбинациям (в усреднение не входит "нет игры")).

Интересно какие мены можно рассматривать, и каким должен быть новый тест?
Вложения
Тип файла: exe kosshams.exe (202.5 Кб, 135 просмотров)
Шамсутдинов вне форума      
Старый 26.03.2007, 14:12   #108 (permalink)
Бессмертный
 
Аватар для korovin
 
Регистрация: 13.02.2004
Адрес: Россия
Сообщений: 3,027
Цитата:
Сообщение от Цитата:
Интересно какие мены можно рассматривать, и каким должен быть новый тест?
Вы теперь лидер, сам и предлагайте. Скорость это конечно важно, но уверен что многим было бы интресно сравнить еще и правильность своих алгоритмов на полном переборе (пусть и не так быстро), ведь ошибку при этом видно сразу. Только пожалуйста, не допускайте +МО в тестах, зарубите выплаты например.

Я как любитель уже вижу что мне тягатся с проф. програмистами смысла нет, остается только надеятся что кто-нибудь когда-нибудь выложит свои гениальные исходники.
korovin вне форума      
Старый 26.03.2007, 14:19     TS Старый   #109 (permalink)
Ветеран
 
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
Ух ты. А что такое N?
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883
Sharky вне форума      
Старый 26.03.2007, 15:00   #110 (permalink)
Новичок
 
Регистрация: 06.03.2007
Адрес: Москва
Сообщений: 27
Цитата:
Сообщение от Sharky писал пн, 26 марта 2007 14:19
А что такое N?
Так как количество у дилера комбинаций "нет игры", "<", "=" среди всех комбинаций его 4 закрытых карт считается комбинаторно, и не зависит от количества выбывших из колоды карт, то лучше считать количество вызовов этой процедуры (N), а не суммарное количество комбинаций у дилера. Это логичнее. Нужно ввести какую-нибудь стандартную терминологию. Например, назвать это основной процедурой, или позицией без мен, или еще как-то. Другая процедура - расчет покупки игры. Быстродействие характеризуется долей случаев, когда надо расчитывать покупку игры для основной процедуры, и отношением времени выполнения основной процедуры и расчета покупки игры. Раньше я дал неверную оценку замедления своей программы от покупки игры (в 2 раза). На самом деле - всего на ~1/5.
Для теста мен карт хорошо бы сделать оболочку, к которой можно было бы подключать свою dll или, наоборот сделать оболочку, как dll.
Цитата:
Сообщение от Korovin
но уверен что многим было бы интресно сравнить еще и правильность своих алгоритмов на полном переборе (пусть и не так быстро), ведь ошибку при этом видно сразу
Это решило бы вопрос сравнения правильности. Сам я использовал старую свою программу для тестирования новой. Использовал единичные сравнения и сравнение при переборе в тесте по каждой позиции. Что намного ускорило процесс отладки. Весь новый код я написал заново за полторы недели.
Цитата:
Сообщение от Korovin
Только пожалуйста, не допускайте +МО в тестах, зарубите выплаты например.
Эта мысль мне непонятна.

Я абсолютно не знаю какие мены и разновидности правил нужно считать. Вообще, очень далек от карт. В моей программе уже 8 лет дама была обозначена, как D, а не Q, только сейчас исправил, посмотрев на демонстрацию Sharky из другой темы форума. Названия мастей я забываю периодически. В старой программе bet и fold у меня обозначены как play и refuse - я сам так придумал, зная правила. То, что я в казино никогда не был, думаю, что не нужно объяснять. Я не умею и не особенно хочу делать красивые визуальные эффекты в программах, как Sharky, больше я умею и предпочитаю писать алгоритмы. Кроме того, я не признаю MVS и NET Framework, хотя компилятор в MVS дает более быстрый код.

И, вообще, в чем смысл этой работы? Быть во всеоружии, когда казино сделает мены карт, которые старые программы не успевали рассчитывать? Или еще какой-то смысл.
Шамсутдинов вне форума      
Старый 26.03.2007, 15:06   #111 (permalink)
Новичок
 
Регистрация: 06.03.2007
Адрес: Москва
Сообщений: 27
Мену карт можно тоже написать за 1 неделю или еще быстрее.
Шамсутдинов вне форума      
Старый 26.03.2007, 15:46   #112 (permalink)
Новичок
 
Регистрация: 06.03.2007
Адрес: Москва
Сообщений: 27
Программистских идей несколько. Основная идея в моем алгоритме - то, что по профилю и по количеству свободных карт в ранге КД можно расчитать количество комбинаций с парой (2, 2+2, 3 3+2, 4). Профиль определяется количеством 0,1,2,3 карт в рангах, кроме ранга КД. Каждое из этих чисел от 0 до 12, но их комбинаций 1820. Можно сделать массив [13][13][13][13], переводящий совокупность этих количеств, в номер от 0 до 1819 для экономии места (эта же идея используется, например, для определения комбинации box'а, особенно в случае 6 карт, но там индексы - ранги карт, а не количества). Но лучше сделать один номер - индекс, объединяющий 4 индекса - r0+13*r1+169*r2+2197*r3. Такой индекс инкриментально подсчитать модифицировать, при изменениях в ri. Для подсчета количества, например, трех карт без совпадения ранга, тоже нужно использовать профиль. Для определения старшинства комбинаций, кроме S,F,FS и FR приходится иметь профиль (его индекс) не для всех рангов, а для рангов от 0 до каждого ранга. Поэтому, для этих комбинаций нужно получать массив этих индексов [13]. Он не подлежит для инкрементальных изменений. Рассчет старшинства AK и всех комбинаций с парой обходится вообще без циклов, каждая величина считается сразу по формуле. Хотя, сравнение старшинства пары по первой карте, только чуть-чуть лучше таким образом, чем явное суммирование по меньшей половине ранга по немного более простым формулам.
Вообще, в моей основной процедуре нет ни одного цикла. Рассчет strait быстрее, как switch по всем 13 рангам КД с явными формулами, оптимизированными в каждом конкретном случае.
Для рассчета флешей заводится индекс - свободность карт в масти, как биты. Этот индекс удобно инкриментально изменять, модифицировать, а также получать его для рангов от 0 до нужного. Сейчас из этого индекса у меня исключен ранг КД. Но, помоему, этого лучше не делать, придется переделывать.
Более мелкие рекомендации - следить, чтобы элементы массивов, в т.ч. их подмассивы меньшей размерности, имели размер 1,2 или 4n байт. Для этого нужно добавить ложные записи в структуры или лишние элементы во вложенные массивы (считается, что поля в структурах не выравниваются по 2 или 4 байтам). Не использовать глобальных переменных. Правильно выбирать размер целых типов. Размещать часто используемые данные по небольшим адресам в стеке или в структурах. Понимать, как происходит адресация в стек, в структуру, по индексу массива. В силу этого, некоторые изменения, кажущиеся лучшими, могут дать тот же результат.

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

Вообще, совет - чтобы программировать, нужно сначала хорошо владеть математикой - настолько, что бы суметь придумать новый метод, расчитать новые формулы. Все формулы по игре с заданным МО и дисперсией я вывел самостоятельно. Было достаточно знать, что какая-то формула существует, а иногда и этого не нужно.
Шамсутдинов вне форума      
Старый 26.03.2007, 15:51   #113 (permalink)
Бессмертный
 
Аватар для korovin
 
Регистрация: 13.02.2004
Адрес: Россия
Сообщений: 3,027
Цитата:
Сообщение от Цитата:
И, вообще, в чем смысл этой работы? Быть во всеоружии, когда казино сделает мены карт, которые старые программы не успевали рассчитывать? Или еще какой-то смысл.
Даже не знаю что тут ответить. Ведь все, кто отметился в этой ветке, потратили на эту работу какое-то время, значит видели в ней СВОЙ смысл. Я тоже люблю кодировать алгоритмы, но исключительно для души, это мое хобби. Задачи, которые я ставил для себя, делая свой софт давно уже решены. Единственный вопрос, на который я сам себе не ответил и это меня смущает: МО Русского покера.
korovin вне форума      
Старый 26.03.2007, 15:52     TS Старый   #114 (permalink)
Ветеран
 
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
Для начала мои поздравления! Но сдаваться я еще не собираюсь
На счет стандартной терминологии.. предлагаю:

Games -– количество просчитанных игр. 1 игра = варианту Bet/Fold (каждый конкретный showdown). Если у дилера закрыто 4 карты и в колоде например 30, то это будет C{30,4} = 27405 games.
Hands -- количество просчитанных рук. То есть, если считаем всю колоду как C{52,1} * C{51,5} * C{46,4} то это будет games = C{52,1} * C{51,5} * C{46,4}, hands = C{52,1} * C{51,5}

Если добавить обмены, hands остается прежним, games увеличивается на обмены * вскрытия...

При обменах можно ввести QualifiedGames или просто QGames -- игры принятые в расчет МО, только непонятно как будем аккумулировать результаты, к общему знаменателю что ли?
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883
Sharky вне форума      
Старый 26.03.2007, 16:29   #115 (permalink)
Новичок
 
Регистрация: 06.03.2007
Адрес: Москва
Сообщений: 27
Цитата:
Сообщение от Korovin писал пн, 26 марта 2007 15:51
Единственный вопрос, на который я сам себе не ответил и это меня смущает: МО Русского покера.
Сжатие мастей легко не получится в случае покупки игры. Старая моя программа расчитывает и так МО Русского покера. Можно, конечно убыстрить в 5 раз за счет нового алгоритма (будет тормозить покупка игры, которую нельзя улучшить). Запустите эту программу на сутки на 1 box, потом еще на одни сутки - на 2 box'а. Результат будет правильным.
Раз все свои цели с покером вы выполнили, какие же цели теперь вас интересуют? Или все же, для завершенности сделать этот алгоритм сжатия мастей, когда нет покупки игры, включить это в мою имеющуюся программу, обновить на своем сайте опять вместе со всеми исохдинками, тогда можно спокойно перейти к другим задачам, а об этой навсегда забыть с чувством полного удовлетворения. Всего для этого ощущения нужна неделя работы. Вы меня почти убедили.
Шамсутдинов вне форума      
Старый 26.03.2007, 16:44   #116 (permalink)
Новичок
 
Регистрация: 06.03.2007
Адрес: Москва
Сообщений: 27
Цитата:
Сообщение от Korovin писал пн, 26 марта 2007 14:12
остается только надеятся что кто-нибудь когда-нибудь выложит свои гениальные исходники.
Я вам их послал по email.
Шамсутдинов вне форума      
Старый 27.03.2007, 13:08   #117 (permalink)
Новичок
 
Регистрация: 06.03.2007
Адрес: Москва
Сообщений: 27
В следующем тесте можно будет разрешить использование сжатия мастей в той же задаче. Когда время у всех будет порядка сотых долей секунды или меньше, можно будет усреднять по полному перебору еще 1,2 или 3 дополнительной мертвой карте. Но лучше сразу писать алгоритмы для всех возможных мен, для этого нужно знать, какие мены нужно рассматривать (в том числе, добор 6-ой карты). Это усложняет задачу.

Цитата:
Сообщение от Sharky
Games -– количество просчитанных игр. 1 игра = варианту Bet/Fold (каждый конкретный showdown). Если у дилера закрыто 4 карты и в колоде например 30, то это будет C{30,4} = 27405 games.
Hands -- количество просчитанных рук. То есть, если считаем всю колоду как C{52,1} * C{51,5} * C{46,4} то это будет games = C{52,1} * C{51,5} * C{46,4}, hands = C{52,1} * C{51,5}
Лучше игрой назвать раздачу карт, когда могут предстоять мены, а позицией - когда уже не будет мен, но у дилера закрыты 4 карты. Случай же, когда все карты дилера уже открыты, не нужно считать, потому что с точки зрения программы эти ситуации не перебираются и быстродействие алгоритма не очень зависит от количества мертвых карт. Но при расчете мен все же единицей измерения будет количество расчетов для совокупность рангов поменяных карт, с суммированием по всем совокупностям мастей, потому что эта процедура уже далее неделима.

Можно было бы сделать в переспективе коммерческую версию с красивым оформлением, но я точно не буду заниматься таким оформлением. Не лучше ли специализироваться, тем более, что у некоторых людей найдутся идеи по оформлению. Интересно, что думает по этому поводу Sharky?
Шамсутдинов вне форума      
Старый 27.03.2007, 17:03   #118 (permalink)
Участник
 
Регистрация: 13.10.2004
Сообщений: 165
Цитата:
Сообщение от Шамсутдинов писал пн, 26 марта 2007 16:29
Запустите эту программу на сутки на 1 box, потом еще на одни сутки - на 2 box'а. Результат будет правильным.
А как запустить на счет? Все перепробовал, но работает только если выбрать "Play", после этого жму "Старт" - чета считает. По другому жму "Старт" ниче не происходит.
Fabrica вне форума      
Старый 27.03.2007, 23:44     TS Старый   #119 (permalink)
Ветеран
 
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
Цитата:
Сообщение от Шамсутдинов писал вт, 27 марта 2007 12:08
Лучше игрой назвать раздачу карт, когда могут предстоять мены, а позицией - когда уже не будет мен, но у дилера закрыты 4 карты. Случай же, когда все карты дилера уже открыты, не нужно считать, потому что с точки зрения программы эти ситуации не перебираются и быстродействие алгоритма не очень зависит от количества мертвых карт.
Не нужно мыслить с позиции алгоритма программы, а нужно с позиции модели игры, которую программа просчитывает.. Представь что я дилер, ты игрок, тебе сдал 5 карт, и себе 1 карту в открытую. Твое действие Bet/Fold. Что бы определить его МО, нужно просчитать все возможные варианты, а это и есть games.. Этот термин выбрал не случайно, в калькуляторах Холдэма например он тоже используется...

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

Цитата:
Сообщение от Шамсутдинов писал вт, 27 марта 2007 12:08
Можно было бы сделать в переспективе коммерческую версию с красивым оформлением, но я точно не буду заниматься таким оформлением. Не лучше ли специализироваться, тем более, что у некоторых людей найдутся идеи по оформлению. Интересно, что думает по этому поводу Sharky?
Ну а что мне сказать? Если хочешь -- делай конечно, экономическую ценность проекта вряд ли обоснованно обозначу. Может пару киллобаксов в год и будет, х.з. Свои тренажеры и калькулятор я время от времени дописываю, переписываю, по море своей надобности... может когда нить добью до финала, может нет. У меня это перманентно как бзик. А так почти у всех есть или свои или давно купленные. Новых покеров нет, хорошие убирают... рынок имхо, сворачивается. Мое мнение: заработать тут не удастся. А вот прославится вполне можно. Если твоя карьера прогер, то такой личный проект может рекламу сделать.. А я хочу от програмухи уйти в бизнес, запарило меня все это уже..
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883
Sharky вне форума      
Старый 28.03.2007, 14:11   #120 (permalink)
Новичок
 
Регистрация: 06.03.2007
Адрес: Москва
Сообщений: 27
Цитата:
Сообщение от Fabrica писал вт, 27 марта 2007 17:03
А как запустить на счет? Все перепробовал, но работает только если выбрать "Play", после этого жму "Старт" - чета считает. По другому жму "Старт" ниче не происходит.
См. описание на моем cайте:
[Зарегистрироваться?] .

Опишу еще раз, как подсчитать МО Русского покера.
Еще раз пересказать. 1) вызываете программу rp.exe, 2) можете нажать "Kind", 3) можете изменить настройки (см. pkr.doc, где они кратко описаны), 4) нажимаете на правую кнопку бокса дилера - самого верхнего и на кнопку, стоящую справа от 1-ого бокса, при этом нажмутся все кнопки на этом боксе, 5) нажимаете на кнопку "Start", 5) достоверное значение МО начинается после завершения цикла 2+ (см. pkr.doc). В одном цикле считается 4902 игры. Идут циклы 1,1+,2,2+,3,3+... Вычисление МО, используя деление на группы позволяет для получения той же точности просчитать в 100 раз меньше позиций. При этом используется тот факт, что дисперсия внутри каждой группы небольшая. Для того, чтобы подсчитать МО с точностью 0,1% нужно дождаться цикла с номером ~10 (точно я не помню). Результаты по в конце каждого цикла и после нажатия на кнопку "Stop" сохраняются в файл pkrlog.txt.

Чтобы подсчитать на 2-ом боксе в пункте 4) делаете два бокса и на втором тоже нажимаете на все кнопки (можно подсчитать с любым количеством известных карт).

Режим Play - сделан для рассмотрения покупки игры. Его можно использовать для получения ошибки алгоритма покупки игры, так как в случае Play все считается без приближений. Также можно проверить верность основного алгоритма подсчета позиции. Сделать это можно следующим образом:
1) Выбираете позицию (1 карта дилера и 5 карт или 6 на 1-ом боксе).
2) Выбираете "Play".
3) Нажимаете на 4 свободных карты дилера.
4) Нажимаете "Start" - происходит полный перебор 4 карт дилера с усреднением результата.
5) Выбираете "0 Change".
6) Нажимаете на кнопку с изображением таблицы слева от таблицы результатов.
7) В окне "Results" видите текущий и предыдущий результаты, а также их разницу.
Аналогично можно проверить правильность всех программы, кроме доборов 6-ой карты (если мне не изменяет память).
Шамсутдинов вне форума      

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автозамена. TEST Grey Техническая поддержка форума 10 21.12.2008 13:01
Japanese IQ Test Vors Поговорим за жизнь 9 28.04.2008 11:40
был такой Donkey test Гламуризатор-р-р Около покерного стола 1 22.04.2007 03:25



Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.

Быстрый переход
Правила форумов CGM Контакты Справка Обратная связь CGM.ru Архив Вверх Главная
 
Использование материалов сайта разрешено только при наличии активной ссылки на источник.
Все права на картинки и тексты принадлежат Информационному агентству CGM и их ПАРТНЕРАМ. Политика конфидециальности
CGM.ru на Youtube CGM.ru на Google+ CGM.ru в Twitter CGM.ru на Facebook CGM.ru в vKontakte CGM.ru в Instagram

В сотрудничестве с Pokeroff.ru
Текущее время: 08:25. Часовой пояс GMT +3.
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot