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

Ускорить расчет раскладов в покере...

Важные объявления
Старый 07.05.2004, 23:25   #21 (permalink)
Бессмертный
 
Аватар для Grey
 
Регистрация: 30.04.2004
Сообщений: 3,612
Цитата:
Сообщение от denker писал(а) ср, 05 мая 2004 08:41
2Grey:А мат.ожидание e t.c. тоже целочисленными функциями бум считать?
Для вычисления МО требуется 1 (одна) итоговая операция деления с плавающей запятой. Остальной расчет идет в целых числах.
Цитата:
Сообщение от Цитата:
ИМХО, на современном "железе" разница между целочисленными и "плавающими" функциями не существенна...
Разумеется, несущественна. Всего-то на порядок. Какая разница, ждать 3 минуты или час?
__________________
Arthur Grey
Grey вне форума      
Старый 30.05.2004, 13:24   #22 (permalink)
Увлечённый
 
Регистрация: 13.02.2004
Сообщений: 443
Grey, ты не прав, разница по времени получается 3мин и 3мин+1секунда (вообще сомниваюсь что для компа имеет разница целочисленные или плавающие. Возможно, ширина значения в байтах и повлияет на процесс..., но,если взять допустим значения типов INT и FLOAT,то ширина для них одинаковая(ЗЫ:32))
ёжик вне форума      
Старый 30.05.2004, 14:03   #23 (permalink)
Бессмертный
 
Аватар для Grey
 
Регистрация: 30.04.2004
Сообщений: 3,612
Цитата:
Сообщение от ёжик писал(а) вс, 30 мая 2004 13:24
Grey, ты не прав, разница по времени получается 3мин и 3мин+1секунда (вообще сомниваюсь что для компа имеет разница целочисленные или плавающие. Возможно, ширина значения в байтах и повлияет на процесс..., но,если взять допустим значения типов INT и FLOAT,то ширина для них одинаковая(ЗЫ:32))
Ежик, ты тоже используешь тип float для расчета количества сочетаний? (я, кстати, тоже не вижу разницы между печенью и селезенкой - ширина одинаковая )
__________________
Arthur Grey
Grey вне форума      
Старый 30.05.2004, 14:36   #24 (permalink)
Энтузиаст
 
Аватар для Hamster
 
Регистрация: 09.03.2004
Адрес: Moscow
Сообщений: 238
Ребяты, не ссорьтесь! Грей абсолютно прав - "ширина" тут абсолютно ни причем - дело в том, что алгебраические операции, например умножения Int*Int и Fload*Float комп обрабатывает, скажем там по разным алгоритмам. Так, что естессно, для ускорения количественныен показатели надо делать целыми.

Hamster
З.Ы. А вообще - есть такая штука как профайлер...
__________________
\"Бизнес - это просто. Это деньги других людей\"
(с) А.Дюма
Hamster вне форума      
Старый 30.05.2004, 15:42   #25 (permalink)
Бессмертный
 
Аватар для Grey
 
Регистрация: 30.04.2004
Сообщений: 3,612
Все так, только основной пожиратель тактов процессора не умножение, а деление. (Неспециалистам советую сравнить алгоритмы того и другого "на бумажке". 1 класс, 2 четверть)
__________________
Arthur Grey
Grey вне форума      
Старый 30.05.2004, 17:28   #26 (permalink)
Увлечённый
 
Регистрация: 13.02.2004
Сообщений: 423
Hamster, привет.

Мне видится, что спор – на пустом месте.

Думаю все здесь собравшиеся понимают, что в машине есть только сложение. Операция умножения выполняется за N тактов сложения (со сдвигом), равным длине сомножителя. Отличие целочисленной арифметики от плавающей лишь в сложении порядков. Но это все лишь алгоритмически (при одинаковой длине разница несущественна).

Реализация в железе зависит, естесственно, от самого железа. От сопроцессора для плавающей арифметики (помните был такой Х86/Х87, в современных машинах он встроен), от конвеерной обработки, от обработки переполнений (в целых – заботьтесь сами) и кучи других прибамбасов. Так что результаты на разных процессорах могут отличаться.

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

Удачи.
Миша.
Миша вне форума      
Старый 08.06.2004, 02:08   #27 (permalink)
Новичок
 
Регистрация: 08.06.2004
Адрес: Москва
Сообщений: 27
Интересная тема.
тоже занялся написанием своего анализатора.
вот написал только что первую версию.
хотелось бы сравнить с вашими по скорости, чтобы знать я на верном пути или чтото не допонимаю.

в чем оцениваете скорость?

не понял просто что значит "считает обмен 5 карт на 1 боксе за 6 секунд". это значит считает один вариант обмена за 6 сек? или все С(46,5)=1370754?

или что значит анализ одной руки? анализ с обменами или без?
joker2k1 вне форума      
Старый 08.06.2004, 08:09     TS Старый   #28 (permalink)
Ветеран
 
Аватар для Mariner
 
Регистрация: 12.02.2004
Адрес: Россия, УРФО
Сообщений: 1,399
Приветствую!

Цитата:
Сообщение от Цитата:
в чем оцениваете скорость?
Можно в вариантах заданного типа обмена в секунду (минуту).

Цитата:
Сообщение от Цитата:
не понял просто что значит "считает обмен 5 карт на 1 боксе за 6 секунд". это значит считает один вариант обмена за 6 сек? или все С(46,5)=1370754?
Считает МО заданного типа обмена, т.е. обмена 5 карт за 6 секнуд. Или тоже самое что 1370754 возможныхк 5 карточных комбинаций за 6 секунд.
Сейчас для обмена 5 карт скрорость такая: с сжатием по мастям 0.88 секунд, без сжатия - 11 секнуд.
Комп Athlon XP 2200+

ЗЫ. Это не самые лучшие показатели.
__________________
Mariner

Западное полушарие Марса рассечено на протяжении 4 000 км вдоль экватора рифтовыми долинами Маринер - крупнейшим поясом разломов на планете.
Mariner вне форума      
Старый 11.06.2004, 00:58   #29 (permalink)
Новичок
 
Регистрация: 08.06.2004
Адрес: Москва
Сообщений: 27
Отлично!

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

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

joker2k1 вне форума      
Старый 11.06.2004, 09:57     TS Старый   #30 (permalink)
Ветеран
 
Аватар для Mariner
 
Регистрация: 12.02.2004
Адрес: Россия, УРФО
Сообщений: 1,399
Приветствую.

Установи сам себе необходимый уровень и стремись к нему.
Мне требуется всего лишь 20 000 000 млн 5 карточных обменов в сутки на моем компьютере.

Как закончишь вторую верси пиши результат, можешь на e-mail.

__________________
Mariner

Западное полушарие Марса рассечено на протяжении 4 000 км вдоль экватора рифтовыми долинами Маринер - крупнейшим поясом разломов на планете.
Mariner вне форума      
Старый 11.06.2004, 17:38   #31 (permalink)
L0M
Незнакомец
 
Регистрация: 11.06.2004
Сообщений: 1
Всегда хочется большЕго
Когда есть 5 карт за полторы секунды мечтаешь о сотне за тоже время
А мне и миллиона в сутки достаточно
L0M вне форума      
Старый 12.06.2004, 00:08   #32 (permalink)
Незнакомец
 
Регистрация: 13.04.2004
Сообщений: 17
Хватит мерить скорости, давайте сравним результаты. А чтобы никаких псевдо секретов не разглашать, можно выбрать какие-нибудь экзотические правила. Если на них результаты будут одинаковые, значит и все остальное работает правильно.

Я начну. Насколько я знаю, в Москве правил с обменом 2 за 1 не осталось. По-этому мой вариант такой:
Обмен 2 карт за 1 анте, ТК играет, покупка обменом старшей карты за 1 анте, без страховки, выплаты стандартные.

Результаты
МО : 0.007 анте (+0.7%)
ошибка: 0.001 анте (0.1%) (ошибка стандартная гауссовская, то есть вероятность истинного значений быть в пределах ошибки равна 60 с чем-то процентов)
7.8 млн рук за 2.5 часа.
NoSound вне форума      
Старый 12.06.2004, 05:44     TS Старый   #33 (permalink)
Ветеран
 
Аватар для Mariner
 
Регистрация: 12.02.2004
Адрес: Россия, УРФО
Сообщений: 1,399
Приветствую!

С удовольствием бы перестал мериться скоростью и улчшать алгоритм, если бы не одно но.
Расчет обмена 2 карт занимает у меня для 2,3 млн рук около 60 часов, так что расчет 7.8 млн рук займет около недели...

Может расскажешь идею, как тебе удалось добиться такой скорости?
ЗЫ. Можно по e-mail.

Кроме того, по первости процедуру расчета МО написал сам неправильно. Т.е. получал МО, которое согласуется с другими расчетами, оно было чуть меньше, но попадало в +- ошибку. Пришлось сравнивать МО по комбинациям и таким образом отловить две страшных ошибки.

__________________
Mariner

Западное полушарие Марса рассечено на протяжении 4 000 км вдоль экватора рифтовыми долинами Маринер - крупнейшим поясом разломов на планете.
Mariner вне форума      
Старый 12.06.2004, 14:08   #34 (permalink)
Незнакомец
 
Регистрация: 13.04.2004
Сообщений: 17
Обмен 2 карт за 10 секунд ? Это не плохой, это очень плохой результат. Как вообще у тебя такое получилось, если обмен 5 карт делается у тебя за 1 секунду. Обмен 2 карт должен быть раз в сто быстрее. Чего-то ты напутал, мне кажется.

Для двух карт неплохо будет работать и простой переборный алгоритм со сжатием по мастям. Вот и получишь мою скорость. Там же всего 46*45/2 комбинаций надо перебрать (без сжатия). Для расчета комбинаций дилера используется комбинаторный анализ.

По-моему пора писать подробный manual по алгоритмам просчета покеров
NoSound вне форума      
Старый 12.06.2004, 19:40     TS Старый   #35 (permalink)
Ветеран
 
Аватар для Mariner
 
Регистрация: 12.02.2004
Адрес: Россия, УРФО
Сообщений: 1,399
Приветствую!

Цитата:
Сообщение от Цитата:
Обмен 2 карт за 10 секунд ? Это не плохой, это очень плохой результат. Как вообще у тебя такое получилось, если обмен 5 карт делается у тебя за 1 секунду. Обмен 2 карт должен быть раз в сто быстрее. Чего-то ты напутал, мне кажется.
Собственно, получается 11 обменов 2 карт в секунду. Причем сжатие по мастям не использую. Т.к. пока нет времени выводить формулы. Знаю несколько путей улучшить скорость расчета, но пока руки не доходят реализовать. :( Кстати, повод есть повод подумать мне, почему же у меня так медленно... :?

Цитата:
Сообщение от Цитата:
Для двух карт неплохо будет работать и простой переборный алгоритм со сжатием по мастям. Вот и получишь мою скорость. Там же всего 46*45/2 комбинаций надо перебрать (без сжатия). Для расчета комбинаций дилера используется комбинаторный анализ.
Да, но всего 2 карты можно сбросить 10 способами и получаем 10*1035=10350. Остальное также.

Цитата:
Сообщение от Цитата:
По-моему пора писать подробный manual по алгоритмам просчета покеров
В очередь! У меня эта идея появилась 1,5 года назад. Уже исписано более 48 страниц в 96 листовой терадке. Буду на пенсии, перебью в Word. 8-)
__________________
Mariner

Западное полушарие Марса рассечено на протяжении 4 000 км вдоль экватора рифтовыми долинами Маринер - крупнейшим поясом разломов на планете.
Mariner вне форума      
Старый 13.06.2004, 16:44   #36 (permalink)
Незнакомец
 
Регистрация: 13.04.2004
Сообщений: 17
> Собственно, получается 11 обменов 2 карт в секунду.
Да, действительно, я неправильно посчитал. Принимай извинения.

Разница между нашими алгоритмами наверное вот в чем. Ты считаешь вероятности дилера для каждого из 10350 случаев, а я только один раз в начале.
Моя ошибка от такого упрощения для одного обмена примерно равна до 0.01 анте. Однако у нас симуляция, а значит нам важно не точное значение, а принять правильное решение. Возможных действий 10 и пусть их мо равновероятно распределены по отрезку в 1 анте, тогда вероятность принять неправильное решение будет 2*0.01/1 = 0.02. Если мы принимаем неправильное решение, то теряем в точности примерно начальные 0.01 анте, итого получаем конечную ошибку 0.01*0.02=0.0002, то есть очень мало. Это оправдывает мое упрощение.
Мутно наверное написал, но думаю смысл понятен.

> Уже исписано более 48 страниц в 96 листовой терадке
Ну ты даешь! Начнешь набирать в цифру, посылай на рецензию
NoSound вне форума      
Старый 14.06.2004, 09:56   #37 (permalink)
Бессмертный
 
Аватар для korovin
 
Регистрация: 13.02.2004
Адрес: Россия
Сообщений: 3,027
Интересно наблюдать за столь живущей темой

Цитата:
Сообщение от Цитата:
Обмен 2 карт за 1 анте, ТК играет, покупка обменом старшей карты за 1 анте, без страховки, выплаты стандартные.
Хотелось бы уточнить, ОДНУ карту менять нельзя? Если можно, то МО явно занижено, если нельзя - завышено.

Предлагаю для чистоты эксперимента убрать пока покупку игры. Пусть будет классический покер, 1 бокс, ТК играет, выплаты стандартные (1,1,2,3,4,5,7,20,50,100). Анет платят. Пас возможен всегда. Посчитаем МО:

Обмен 1 карты, стэй или пас: -1.00% (900 сек)
Обмен 2х карт, стэй или пас: -0.45% (5000 сек)
Обмен 5и карт, стэй или пас: -4.10% (21000 сек)

В скобках указано время потраченое на анализ 7,46 миллионов раздач на ноутбуке PM1300. Алгоритм обменов "упрощенное сжатие мастей". Анализ игры дилера после КАЖДОГО варианта обмена (прикупа). Все алгоритмы протестированы на алгоритмах полного перебора.

Попутный вопрос к тем, кто считает игру дилера один раз за раздачу. Допустим у нас пара, мы посчитали по формулам комбинаторики сколько комбинаций дилера выше, ниже, равно, пустых. Затем начинаем менять карты, получилось 2 пары, как использовать уже имеющуюся информацию, ведь мы не знаем солько там две пары старше/младше/равно. Уточнять, пренебрегать? У меня время на уточнение внутри комбинации сопоставимо со временем полного анализа игры дилера. Смысл терять точность?

korovin вне форума      
Старый 14.06.2004, 16:46   #38 (permalink)
Незнакомец
 
Регистрация: 13.04.2004
Сообщений: 17
Приветствую!

Цитата:
Сообщение от Korovin писал(а) пн, 14 июня 2004 09:56
Хотелось бы уточнить, ОДНУ карту менять нельзя? Если можно, то МО явно занижено, если нельзя - завышено.
Одну карту в моих правилах менять нельзя. Результаты действительно получаются больше, чем твои (ниже).
Цитата:
Сообщение от Korovin
Предлагаю для чистоты эксперимента убрать пока покупку игры. Пусть будет классический покер, 1 бокс, ТК играет, выплаты стандартные (1,1,2,3,4,5,7,20,50,100). Анет платят. Пас возможен всегда. Посчитаем МО:

Обмен 1 карты, стэй или пас: -1.00% (900 сек)
Обмен 2х карт, стэй или пас: -0.45% (5000 сек)
Обмен 5и карт, стэй или пас: -4.10% (21000 сек)
Мои правила такие же, только с покупкой. Смотрим обмен 2х карт по твоим правилам то есть без покупки, другие обмены пока не посчитал. Мои результаты такие
-0.68% (7000 сек)
ошибка 0.10% (то есть -0.68 +- 0.10)
Вероятность правильности и моего и твоего результата около 2-3%, то есть маловероятно. У кого-то ошибка.

Цитата:
Сообщение от Korovin
В скобках указано время потраченое на анализ 7,46 миллионов раздач на ноутбуке PM1300. Алгоритм обменов "упрощенное сжатие мастей". Анализ игры дилера после КАЖДОГО варианта обмена (прикупа). Все алгоритмы протестированы на алгоритмах полного перебора.
Машина слабая, Duron 650. Все алгоритмы также протестированы на полных переборах.

Цитата:
Сообщение от Korovin
Попутный вопрос к тем, кто считает игру дилера один раз за раздачу.
Это я

Цитата:
Сообщение от Korovin
Допустим у нас пара, мы посчитали по формулам комбинаторики сколько комбинаций дилера выше, ниже, равно, пустых. Затем начинаем менять карты, получилось 2 пары, как использовать уже имеющуюся информацию, ведь мы не знаем солько там две пары старше/младше/равно. Уточнять, пренебрегать? У меня время на уточнение внутри комбинации сопоставимо со временем полного анализа игры дилера. Смысл терять точность?
По формулам комбинаторики я просчитываю не больше\меньше\равно, а вероятности каждой комбинации дилера. А потом для каждого расклада игрока считаю больше\меньше\равно по сохраненному результату. Эта функция работает у меня довольно долго (0.0005 сек) и создает основной вес по времени исполнения. По-этому мое упрощение создает мне выигрыш в скорости в сотни раз (на 5 картах).
Не думаю, что разница между нашими результатами обусловлена этим упрощением. Возможно дело в том, что я не учитываю при одинаковых по значению парах старшую карту, хотя кажется вероятность одинаковых пар очень мала, тем более МО этой ошибки будет равно нулю (на первый взгляд). А как у тебя анализатор проходит стандартные натановские примеры ?
---
1. Ваши карты – J-10-9-8 пик и туз треф, у дилера – пятёрка бубён. Ожидаемый выигрыш при замене туза треф – $304.
2. Ваши карты – J-10-9-8 пик и девятка треф, у дилера – пятёрка бубён. Замена с разбиением девяток приносит в среднем $309. Ожидаемый выигрыш при сохранении пары – $99.
---
NoSound вне форума      
Старый 14.06.2004, 17:57   #39 (permalink)
Бессмертный
 
Аватар для korovin
 
Регистрация: 13.02.2004
Адрес: Россия
Сообщений: 3,027
Цитата:
Сообщение от Цитата:
1. Ваши карты – J-10-9-8 пик и туз треф, у дилера – пятёрка бубён. Ожидаемый выигрыш при замене туза треф – $304.
2. Ваши карты – J-10-9-8 пик и девятка треф, у дилера – пятёрка бубён. Замена с разбиением девяток приносит в среднем $309. Ожидаемый выигрыш при сохранении пары – $99.
3,0406 / 3.0932 / 0.9940

1. Стыдно признатся, но я так и не сделал сравнение флеш на флеш (флстрит в том числе) по старшей карте, у меня строго по масти (такие правила были в городе где я начинал). Разница небольшая но есть.

2. Я так понял, у тебя покупка игры в этот покер добавляет 1.3%. По моим расетам это ОЧЕНЬ много для такой игры. Во сколько она у тебя оценит покупку в 6+6 без ТК, процентов в 10? Ты для каждой пустой руки дилера считаеш МО покупки или какой-то оценочный метод?

3. Ты считаеш МО симуляцией случайных раздач? Я сформировал массив из 7462-х среднестатистических рук (сжатие мастей) и назвал это циклом. При симуляции масти и карта дилера генерируются случайно (в принципе КД тоже можно сделать циклом). Схождение достигается при числе циклов более 50.
korovin вне форума      
Старый 14.06.2004, 19:39   #40 (permalink)
Незнакомец
 
Регистрация: 13.04.2004
Сообщений: 17
Цитата:
Сообщение от Korovin
3,0406 / 3.0932 / 0.9940
у меня 3.0351 \ 3.0878 \ 0.9945
из 3.04 \ 3.09 \ 0.99

1. А у меня все флеши одинаковые. Тоже надо исправлять. Очень интересно, какая разница у тебя получается ? Это может дать оценку ошибки и по учету старшей карты.
2. На самом деле у меня покупка автоматически считается тоже. Для примера, который мы рассматривали, она была около 1.5% даже. Но я не берусь судить, насколько это верно. Если у тебя есть какие-нибудь точные цифры по покупкам, пожалуйста пиши сюда, мне будет очень интересно сравнить. Кстати мы о какой цене покупки говорим, я ставил 1. Насчет метода - да, для каждой пустой руки считаю МО покупки. Я еще посмотрю как там реализовано, помню что не абсолютно точно сделано.
3. Да, симуляция случайных раздач. А ты с циклами конечно мощно завернул. Тут первый вопрос конечно, не будет ли твоя оценка математического ожидания "смещенной" в смысле математической статистики. Понятно, что при стремление 7462 к бесконечности получится точно, но какая точность метода для 7462 ? Однако твой подход кажется эффективным для небольшого числа циклов, вначале схождение должно быть много лучше моего (общепринятого).В любом случае идея, конечно, креативная и интересная.
NoSound вне форума      

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разбор раскладов успешных игроков 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



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

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
Текущее время: 16:34. Часовой пояс GMT +3.
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot