| ||||
| ||||
|
Важные объявления |
|
22.12.2004, 11:25 TS | #1 (permalink) |
Участник
Регистрация: 15.09.2004
Адрес: Ural
Сообщений: 135
|
Hello!
Хочу написать покеррум. Может кто-то уже чем-то подобным занимался и готов поделится алгоритмами? Прежде всего интересует быстрый алгоритм сравнения комбинаций и надёжный и быстрый алгоритм тасования колоды. Может кто-нибудь идеи какие подкинет?
__________________
Thanks. |
0 |
22.12.2004, 11:27 | #2 (permalink) | |
Бессмертный
Регистрация: 01.03.2004
Адрес: RU
Сообщений: 5,045
|
Цитата:
__________________
На трудном пути к легким деньгам... |
|
0 |
22.12.2004, 11:55 | #3 (permalink) | |
Аксакал
Регистрация: 30.08.2004
Адрес: Moscow
Сообщений: 2,258
|
Цитата:
Не хочу отговаривать конечно, но я думаю ты догадываешься, что раскрутка будет стоить в разы больше, чем стоимость написания, плюс всякие завлекательные программы. А с учетом того, какое кол-во народа охотится за бонусами (особенно в России), вложения не факт, что окупятся. Хотя я готов отказаться от получения у тебя бонуса . А насчет написания алгоритма: мне интересно, а ты обсчитвывал например до этого казинный покер. Если да, то что, тебе не подходит тот же алгоритм раздачи и сравнения карт игрока с игроками дилера? У меня какие-то софты на Си++ остались. |
|
0 |
22.12.2004, 12:42 TS | #4 (permalink) | ||
Участник
Регистрация: 15.09.2004
Адрес: Ural
Сообщений: 135
|
Hello!
Цитата:
Пишу я на Делфи, так что в Си трудновато разобратся, но если есть в программе какие-то оригинальные идеи, то я бы посмотрел, хотя лучше на словах объяснить в чём фишка. А хотя, покеррум я сетевой буду делать (это чтобы ботов по разным машинам можно было раскидать, а то процес обучения нейросети может много ресуров отнимать), так что если написать клиента для человека и можно сидеть играть, хоть с ботами, хоть с людьми....
__________________
Thanks. |
||
0 |
22.12.2004, 12:59 | #5 (permalink) | ||
Аксакал
Регистрация: 30.08.2004
Адрес: Moscow
Сообщений: 2,258
|
Цитата:
Цитата:
|
||
0 |
22.12.2004, 14:38 | #6 (permalink) | |
Бессмертный
Регистрация: 01.03.2004
Адрес: RU
Сообщений: 5,045
|
Цитата:
[Зарегистрироваться?] Сейчас авторы ботов ходят тестироваться именно к ним.
__________________
На трудном пути к легким деньгам... |
|
0 |
22.12.2004, 14:49 TS | #7 (permalink) | ||
Участник
Регистрация: 15.09.2004
Адрес: Ural
Сообщений: 135
|
Hello!
Цитата:
1. скорость обучения будет низкой 2. за время обучения такой бот проиграет профи кучу денег Эх, надыбадь бы ханд-хистори с какого-нибудь покеррума, да нейросеть на этих примерах обучить.... (ну скажем мильон рук с одного лимита на полном столе). Учится можно ведь и на плохих примерах типа "так не делай". Пусть для начала все боты одинаково играют все руки. Через некоторое время обучаемый бот начнёт исключать некоторые руки.... соответственно будет переигрывать необучаемых. Однако если они все будут обучаемы и исключать неперспективные комбинации, то ситуация изменится, правила нужно будет снова пересматривать и.т.д. После множества итераций мы найдём золотую средину.... Лучше конечно если эти боты будут по разному играть и по разному обучатся. Думаю когда напишу покеррум, то приглашу желающих потестировать своих ботов.
__________________
Thanks. |
||
0 |
22.12.2004, 15:15 | #8 (permalink) |
Интересующийся
Регистрация: 14.02.2004
Адрес: Москва
Сообщений: 88
|
Я для тасовки колоды применял след-й алгоритм:
1. Раскидываем в цикле все карты (индексы от 1 до 52) в массиве например A(0..1000) случайным образом: i := random(1001); при попадании на уже устан-е число повторяем опер-ю выбора. 2. Проходим последовательно по массиву A и собираем в массив B(колода) перетасованные карты. Интересно, а что ты на вход нейросети подавать собираешся, параметров слишком много?
__________________
decimalseparator := \'.\'; |
0 |
23.12.2004, 12:04 TS | #10 (permalink) | ||
Участник
Регистрация: 15.09.2004
Адрес: Ural
Сообщений: 135
|
Hello!
Цитата:
Если тасовать каждый раз "новую" колоду то будет хуже или лучше если брать перетасованную с прошлого раза? Ну и по поводу собственно алгоритма: Скажем последним в колоде у нас будет туз, тогда в "среднем он должен попасть в средину колоды, но так как основная часть колоды (51 карта) у нас уже распределена по массиву, и распределена по своим случайным местам - т.е. может быть так что большая часть колоды в массиве ниже индекса 500, то в этом случае туз попадает "в среднем" ближе к концу колоды. Иными словами позиция туза в колоде определяется не только его случайным числом, но и в некоторой степени теми числами что выпали раньше. (В общем туз в хорошей, последней позиции, когда все карты уже распределены ) Не будет ли в таком случае некоторой корреляции в положении карт в перетасованной колоде в зависимости от начального положения? Это и к алгоритму Yras кстати тоже относится. ИМХО по его алгоритму у самой первой карты в колоде вероятность быть перемещёной несколько раз выще, чем у последней. ! Цитата:
__________________
Thanks. |
||
0 |
23.12.2004, 12:52 | #11 (permalink) |
Участник
Регистрация: 23.12.2004
Адрес: Екатеринбург-Москва
Сообщений: 128
|
По поводу алгортима, то можно его немного изменить, т.е. если выпал индекс, который уже занят, то запустить ещё раз рандом из двух вариантов, чтобы определить непосредственно за этим индексом, или непосредственно после этого индекса вставить карту. Есть правда небольшое недосаток, что придётся сдвигать массив индексов. Данное усовершенствование можно сказать даже имитирует действие когда одна карта вставляется в колоду.
Что касается нейронных сетей, то я думаю что это будет слишком геморно писать для этого код, тем более одному человеку Лучше развивать свою нейронную сеть в голове, чем обучать другую |
0 |
23.12.2004, 15:10 | #12 (permalink) | |
Аксакал
Регистрация: 15.03.2004
Адрес: Ukraine
Сообщений: 2,217
|
Цитата:
Если не нравится, можешь генерить для каждой карты тег-случайное число, и потом сортировать по тегам. Но к чему эти заморочки? |
|
0 |
24.12.2004, 01:44 | #14 (permalink) | ||
Увлечённый
Регистрация: 12.02.2004
Адрес: Минск
Сообщений: 672
|
Цитата:
Цитата:
Современные НС базируются на очень упрощенной модели, игнорирующей большинство знаний о детальном функционировании мозга. Возможно, для описания систем, имеющих сложность головного мозга, необходимы совершенно новые математические методы. Пока подходов нет, но есть выход!: последовать примеру американских ученых: [Зарегистрироваться?] и культивировать пару тысяч (там 25 000) нейронов домашнего питомца(там крысы) в питательной среде и натренировать играть в покер (там управлять симулятором F22), отталкиваясь (грубо) от того, что управлять F22 так же непросто как играть в покер
__________________
Не являюсь тех. поддержкой - не пишите мне! |
||
0 |
24.12.2004, 10:06 TS | #15 (permalink) | |||
Участник
Регистрация: 15.09.2004
Адрес: Ural
Сообщений: 135
|
Hello!
Цитата:
Я проверяю комбинации так: просматриваю комбинацию и заполняю два массива: один для мастей, второй для номинала карты. Если есть масть с числом 5 и более, то это флеш или стрит-флеш - т.е. нам осталось проверить только не стрит-флеш ли это. (эта проверка будет проводится с частотой появления флеша). Далее просматриваем массив с номиналами карт по ходу выставляя флаги каре, фулл, стрит, сет, две_пары, пара. После этого мы уже определились какого вида у нас комбинация, но не знаем какая именно. (т.е. известно скажем что у нас пара, но не знаем какая). После такого анализа рук каждого грока дожившего до вскрытия мы уже знаем самую старшую комбинацию и возможно уже знаем победителя. Если старшая комбинация у более чем одного игрока, то делаем полную проверку. Может кто-то предложит более быстрый и элегантный алгоритм? И про тасование карт - встроенная функция ramdom может быть хороша, если её использовать для игры, но для моделирование требования к случайности последовательности болеее жесткие. Возможно что встроенная функция не очень хороша для моделирования, но при соответствующем алгоритме тасования колоды этот недостаток можно несколько скомпенсировать? Может встроенная функция генерации псевдослучайной последовательности вообще не подходит для моделирования, и нужно писать свой ГПСП? ! Цитата:
Или я не прав?
__________________
Thanks. |
|||
0 |
24.12.2004, 14:27 TS | #17 (permalink) | |
Участник
Регистрация: 15.09.2004
Адрес: Ural
Сообщений: 135
|
Hello!
Цитата:
(Может имелось в виду Хеширование? Но по моим прикидкам хеш-таблица для 7 карт получается больно большой. Если где-то есть готовые, то дайте ссылку! )
__________________
Thanks. |
|
0 |
24.12.2004, 14:47 | #18 (permalink) | |
Аксакал
Регистрация: 15.03.2004
Адрес: Ukraine
Сообщений: 2,217
|
Цитата:
Понятно, что всевозможных выриантов тасованияч колоды - 52! С другой стороны, последовательность случайных чисел у встроенной функции random определяется начальным значением ( обычно какая-то функция, зависящая от времени), а это 4 байта. Т.е. вариантов всего 2**32, и это микроскопическая доля от того, что могло бы быть( в 1,88e58 раз, это примерно 47!). И получается хитрая ситуация. Зная 2 своих карты + 3 карты флопа ( а в стад-покере мы вообще видим куда больше), мы с определенной вероятностью можем "увидеть" карты соперников, поскольку, скорее всего, лишь одна подобная комбинация представлена в подмножестве 2**32 ( т.е. одна из 47!) Оставалось только сидеть и запоминать Понятно, данный факт волновал многих, и никакой рум этот random теперь не использует, а использует дорогостоящие специализированные решения, с прилагающимися сертификатами. Но я не специалист. |
|
0 |
24.12.2004, 15:24 | #19 (permalink) |
Аксакал
Регистрация: 30.08.2004
Адрес: Moscow
Сообщений: 2,258
|
А мне интересно: используют ли румы какие-то элементы слипания карт и т.д. для имитации живой игры? Ведь нередко подряд приходят одни и те же карты ( вначале одному игроку, потом другому), на флоп в след. раздаче выпадают те же карты, которые были в предыдущей раздаче у тебя и т.д.
|
0 |