| ||||
| ||||
|
Важные объявления |
|
24.12.2004, 19:11 | #22 (permalink) | |
Бессмертный
Регистрация: 30.04.2004
Сообщений: 3,612
|
Цитата:
This is a Mersenne Twister pseudorandom number generator with period 2^19937-1 with improved initialization scheme, modified on 2002/2/10 by Takuji Nishimura and Makoto Matsumoto [Зарегистрироваться?]
__________________
Arthur Grey |
|
0 |
25.12.2004, 14:52 | #24 (permalink) |
Интересующийся
Регистрация: 14.02.2004
Адрес: Москва
Сообщений: 88
|
Очень интересно. Номер мы получим. А как по номеру определить какая именно комбинация. Или в табличке уже будет стоять числовое значение комбинации, но тогда и 2-х байтов достаточно ( 4-раза по 4бита ). Но тогда всё равно остаётся вопрос - предворительного анализа и заполнения таблички.
Кстати, ведь есть ещё и недостроенные комбинации (когда меньше 7-ми карт+ недострит), так что табличка будет 14^7, плюс байт под недостриты.
__________________
decimalseparator := \'.\'; |
0 |
26.12.2004, 01:00 | #26 (permalink) |
Интересующийся
Регистрация: 14.02.2004
Адрес: Москва
Сообщений: 88
|
Да, но в задачах симуляции и анализа ситуации за столом на первый план выходят не сравнение, а определение относительной силы и рангов рук.
Для примера: Флоп - у одного игрока пара двоек, у другого AK и недостроенный флеш. Формально первый впереди, но фактически в большинстве ситуаций вторая рука оказывается более играбельная.
__________________
decimalseparator := \'.\'; |
0 |
26.12.2004, 16:16 | #28 (permalink) |
Интересующийся
Регистрация: 14.02.2004
Адрес: Москва
Сообщений: 88
|
Denker нам ведь в сущности не важно сильнее наша рука другой определённой руки (1на1), собственно потому что её нет, как конкретно-определённой руки. А есть N противников, совершивших некое множество некоторых действий. И важно для нас становиться вероятность выиграть, для нашей руки и для данных условий.
Вот эта вероятность, как я себе представляю и есть “относительная сила” руки. А относительная потому, что она будет разной, для одной и той же комбинации, но в разных условиях.
__________________
decimalseparator := \'.\'; |
0 |
26.12.2004, 16:55 | #29 (permalink) |
Ветеран
|
В принципе согласен, математически определяется "абсолютная" 8-) сила руки, а если вводить зависимость от действий оппонентов, то понятие "относительная" действительно имеет место быть. Т.к. определить насколько изменится вероятность выиграть на данной руке, после определённых действий других игроков представляется достаточно сложным... Т.к. теже самые действия имеют различные значение от игрока к игроку, да и не только, один и тот же игрок в зависимости от своего состояния(тилт?) может совершать одни и теже действия в противоположных(!) ситуациях... И опеределить весовые коэфициенты каждому действию с определённой точностью позволяет только опыт, опирающийся на математический аппарат.
|
0 |
27.12.2004, 12:03 TS | #30 (permalink) | |
Участник
Регистрация: 15.09.2004
Адрес: Ural
Сообщений: 135
|
Hello!
Цитата:
Всего 1 000 000 рук сдано. Вначале результат тасовки колоды, которая собрана по картам, т.е. колода 222233334444..ККАААА. Тасуем её и сдаём по две карты 10 игрокам. 1 игрок ,6647,7541,6496,6019,5306,4802,4271,4061,3727,3302 ,3045,2866 ,2578 2 игрок ,4767,7739,6840,6079,5619,5025,4577,4068,3830,3553 ,3187,2923 ,2656 3 игрок ,4348,6455,6857,6279,5779,5136,4703,4251,3794,3628 ,3420,3063 ,2801 4 игрок ,4458,4354,7187,6336,5779,5363,4870,4432,3983,3813 ,3450,3147 ,2980 5 игрок ,4472,4089,5860,6681,6100,5523,5023,4737,4219,3833 ,3544,3307 ,3070 6 игрок ,4535,4018,4099,6791,6286,5709,5179,4728,4398,3986 ,3613,3375 ,3215 7 игрок ,4250,4133,3743,5629,6302,5781,5406,4928,4531,4164 ,3845,3531 ,3429 8 игрок ,4463,4055,3809,3891,6626,5916,5580,5131,4750,4376 ,4129,3754 ,3492 9 игрок ,4495,4091,3861,3610,5592,6334,5803,5208,4943,4547 ,4226,3874 ,3587 10 игрок ,4465,4008,3867,3643,3703,6526,6074,5456,4953,4659 ,4329,3968 ,3786 А теперь колода собрана по мастям, т.е. 23456789TJQKA23....QKT 1 игрок ,4411,4786,5018,4940,4915,4832,4692,4504,4274,4348 ,4142,4027 ,3962 2 игрок ,4572,4531,4183,4680,4876,4895,4712,4636,4609,4435 ,4368,4268 ,4090 3 игрок ,4675,4490,4401,4350,4229,4614,4830,4851,4623,4597 ,4505,4306 ,4234 4 игрок ,4776,4573,4623,4545,4338,4264,4359,4478,4840,4834 ,4547,4548 ,4353 5 игрок ,4896,4811,4629,4657,4599,4276,4422,4234,4026,4508 ,4737,4759 ,4484 6 игрок ,4967,5044,4839,4622,4717,4567,4374,4243,4134,4126 ,4118,4356 ,4759 7 игрок ,4805,5092,5040,4872,4730,4648,4540,4354,4459,4229 ,4156,4091 ,4128 8 игрок ,4396,4358,4732,4979,4908,4837,4788,4553,4511,4441 ,4517,4195 ,4182 9 игрок ,4507,4369,4431,4187,4484,4811,4893,4833,4514,4645 ,4529,4492 ,4291 10 игрок ,4607,4579,4451,4450,4361,4167,4514,5021,4729,4753 ,4674,4536 ,4525 В первом случае отчётливо виден перекос распределения пар, особенно у первых игроков. Во втором случае перекоса по парам нет, но очевидно тут будет дисбалланс по мастям. Хотя вроде бы алгоритм перемещает все карты минимум по разу, но видно у первых карт в колоде есть преимущество в позиции. Можно конечно не брать каждый раз "новую" колоду, а использовать уже перетасованную с прошлого, но это будет корреляция с предыдущей сдачей. Возможно если перетасовать несколько раз, то результат будет лучше, но насколько? И сколько раз тасовать колоду чтобы результат можелирования не очень от реального отличался? P.S. Первая колода перетасованная два раза становится довольно убедительна в плане распределения пар: 1 игрок ,4604,4530,4487,4596,4529,4638,4737,4625,4644,4519 ,4551,4565 ,4572 2 игрок ,4517,4574,4595,4572,4555,4545,4632,4496,4499,4658 ,4581,4521 ,4548 3 игрок ,4458,4507,4520,4465,4522,4581,4618,4478,4579,4619 ,4599,4665 ,4650 4 игрок ,4583,4538,4478,4596,4594,4624,4550,4475,4469,4490 ,4614,4688 ,4475 5 игрок ,4496,4600,4594,4605,4567,4574,4566,4591,4405,4589 ,4556,4619 ,4483 6 игрок ,4723,4631,4568,4501,4461,4598,4561,4399,4571,4563 ,4613,4696 ,4392 7 игрок ,4540,4497,4422,4519,4509,4551,4562,4532,4620,4479 ,4547,4588 ,4461 8 игрок ,4643,4528,4593,4744,4528,4613,4554,4572,4648,4443 ,4431,4576 ,4640 9 игрок ,4501,4669,4574,4490,4567,4457,4515,4567,4516,4615 ,4536,4664 ,4516 10 игрок ,4586,4499,4603,4630,4689,4605,4569,4602,4661,4742 ,4554,4498 ,4611
__________________
Thanks. |
|
0 |
27.12.2004, 13:58 | #31 (permalink) |
Аксакал
Регистрация: 15.03.2004
Адрес: Ukraine
Сообщений: 2,217
|
duMka, ты ГОНИШЬ...
Возможно, у тебя Random seed выдает повторяющиеся серии? В примере вызов Randomize не указан, так может ты забываешь его инициализировать? Но скорее всего, у тебя проблемы с распознаванием и агрегированием результатов. А так, откуда взяться таким сдвигам? Представь, что у тебя есть другой, чистый массив. По приведенному алгоритму ты всегда случайным образом выбираешь одно число из старого массива и переписываешь в новый. И так пока числа не закончатся. От того, сколько раз ты будешь тасовать старый массив перед определяющим выбором, смысл не изменится. А в алгоритме старый и новый массивы совмещены, так что отпадает необходимость в двойном расходе памяти. Ну, про нейросети я промолчу... |
0 |
27.12.2004, 14:31 TS | #32 (permalink) | |
Участник
Регистрация: 15.09.2004
Адрес: Ural
Сообщений: 135
|
Hello!
Цитата:
Обратите внимание в первом случае результаты сразу видно что не случайны. Колода инициализирована так: for i:=1 to 13 do begin koloda[i*4-3]:=i; koloda[i*4-2]:=i; koloda[i*4-1]:=i; koloda[i*4]:=i; end; Во втором случае результат более случаен и единственное отличие в инициализации колоды: for i:=1 to 13 do begin koloda[i]:=i; koloda[i+13]:=i; koloda[i+26]:=i; koloda[i+39]:=i; end; Третий результат похоже имеет даже меньшую дисперсию чем второй (не посчитал но похоже на то), там единственно добавлена сортировка второй раз (просто скопировал кусок кода 2 раза). Поскольку никаких изменений связанных с ramdom я не делал, так что дело не в нём, а в алгоритме тасовки колоды. P.S. Масти в программе для простоты я не учитывал, поэтому исследовал только появление пар. Кому интересно пример могу кинуть. Думаю потестировать разные способы тасования и сейчас буду переписывать с учётом мастей, и наверно надо карты на стол кидать и исследовать случайность выпадения покерных комбинаций и количества побед.
__________________
Thanks. |
|
0 |
27.12.2004, 15:53 | #34 (permalink) |
Интересующийся
Регистрация: 14.02.2004
Адрес: Москва
Сообщений: 88
|
duMKa ИМХО прав, если последнии карты, будут распределяться более-менее равномерно, то первые будут иметь тенденцию всплывать к началу колоды, отсюда и эффекты неравномерности.
Непонятна вот эта строчка: k := random( i ) + 1; - почему именно рандом в пределах i ? duMKa попробуй так: k := random( 52 ) + 1; ps. Про нейросети я тоже молчу, но по другой причине ...
__________________
decimalseparator := \'.\'; |
0 |
27.12.2004, 16:03 | #35 (permalink) |
Аксакал
Регистрация: 15.03.2004
Адрес: Ukraine
Сообщений: 2,217
|
Да ни фига подобного!
Прогоняю свою симуляцию на 1000000 для 10 игроков. Каждая карта роздана конкретномуигроку минимальное количество раз - 37850, максимальное - 39080. Мин. кол-во какой-нибудь пары у какого-нибудь игрока - 4330, максимальное - 4719 -------------------------- А насчет всплывания - это все надумано. Иллюзия. Если кажется, что что-то всплывает - просто сдвигай массив вверх, начиная с выбранного элемента. Но это более накладно. |
0 |
27.12.2004, 16:24 | #36 (permalink) |
Интересующийся
Регистрация: 14.02.2004
Адрес: Москва
Сообщений: 88
|
Ещё про RANDOMAZE, вызов этой процедуры через малые промежутки времени, будет преводить к инициализации близких случайных последовательностей.
Поэтому, RANDOMAZE нужно вызывать не каждый раз перед тусовкой колоды, а засунуть куда-нибуть в onFormShow.
__________________
decimalseparator := \'.\'; |
0 |
28.12.2004, 08:14 TS | #38 (permalink) | |
Участник
Регистрация: 15.09.2004
Адрес: Ural
Сообщений: 135
|
Hello!
Цитата:
To pokerchatko and Sfanrod. А почему собственно молчите про нейросети. Кажется это было бы интересно и в тему форума: "Применение нейросетей для анализа покерных ситуаций".
__________________
Thanks. |
|
0 |
28.12.2004, 09:43 | #39 (permalink) |
Интересующийся
Регистрация: 12.06.2004
Сообщений: 59
|
еще раз про алгоритм:
в начале выбирается 1 карта из 52. кладется на 52 место. потом 1 из оставшихся 51, кладется на 51-е. итд. и тут неважно, с начала брать карты в раздачу или с конца или рандомом, распределение будет нормальным. |
0 |
29.12.2004, 07:54 | #40 (permalink) |
Энтузиаст
Регистрация: 12.03.2004
Адрес: Екатеринбург
Сообщений: 337
|
Привет,
Мой ответ возможно не совсем в тему. А почему для поиска некой оптимальной сисетмы нужно писать именно свой покер рум и ботов? Почему не использовать тот же Turbo Texas Holdem 5 для симуляции раздач с игроками/профилями который готов уже сейчас? Каждый профиль можно заточить под агрессию/пассивность/беты/блеф-полублеф как на флопе для каждой позиции (1й, средний, последний со словом), так и на терне. Задать максимум бетов, к примеру максимум 3 бет на флопе с последним словом. Все это для каждой ситуации - их вроде около 25 (типа у тебя 2х стороний старший стрейт дро против 2х флешевой доски при неспаренной борде на флопе/на терне). Префлоп тоже настраивается. Есть уже готовые группы соперников - Агрессивные/Пассивные/Средние/Лузовые/Жеские. Подставляй заточенного бота/профиля и запускай считалку на N раздач. ИМХО. |
0 |