BUGy
Расчёт M и D [ID=9196]
Вт, 6 июля 2004 07:05 [#]
|
Приветствую всех.
Хотел бы рассмотреть в этой ветке способы расчёта МО и диспы.
У меня сразу возникло несколько вариантов: первое это считать перебором всех возможных вариантов со всеми возможными вскрышками С(52,5)*47, что обеспечивает полную сходимость, но очень долго, можно перебрать все варианты и для каждого сгенерировать случайную вскрышку, что тоже всё равно долго. Возможно случайная генерация раскладов и вскрышки, но можно ли при этом пользоваться встроенным ГСЧ в язык программирования, т.к. результат будет псевдослучаен (я программирую на VB6), или же нужно писать собственный. Далее есть ещё два варианта: брать МО каждой раздачи для получения среднего(сумму МО каждай раздачи поделить на число раздач) или же для каждого расклада находить оптимальное решение или задать линию игры заранее и генерировать купленные карты и оставшиеся карты диллеру ( симулировать сам игровой процесс).
Далее хотелось бы разобрать варианты расчёта дисперсии: посчитать МО игры, далее перебирая или генерируя расклады вычитать МО игры из МО расклада, и в последствии получить дисперсию, или же брать каждыё расклад в отдельности считать его МО и вычитать из результата каждого возможного исхода, таким образом получая дисперсию каждого расклада.
Будут ли отличатся результаты полученные разными способами? Все ли из них имеют право на жизнь, и какой наилучший?
Хотулось бы услышать ещё возможные варианты.
|
|
korovin
Re: Расчёт M и D [ID=9197] [ответ на 9196 ()]
Вт, 6 июля 2004 11:37 [#]
|
Я строю таблицу вероятости исхода одной раздачи: -4,-3,-1,0,1,2,3...
По этой таблице легко счтается и М и Д. Метод хорош для любой игры.
Если перебором долго, применяю комбинацию перебора карт руки и случайную генерацию остальных карт.
|
|
BUGy
Re: Расчёт M и D [ID=9198] [ответ на 9196 ()]
Ср, 7 июля 2004 03:43 [#]
|
Приветствую Korovin.
Хотел бы спросить. Нельзя ли для оценки МО пробежаться по массиву комбинаций описанных в ветке ускорения расчёта. И если брать комбинации из файла, то по какому принципу их туда заносить.
>Я строю таблицу вероятости исхода одной раздачи: -4,-3,-1,0,1,2,3...
Как я понял в этот массив заносятся вероятности каждого исхода, потом каждая ячейка делится на число перебрпнных вариантов, потом перемножается каждый исход на свою вероятность и суммируя получаем М. Ну это в принципе тоже самое что и суммировать М для каждого расклада, только можно сразу ещё и Д посчитать.
|
|
korovin
Re: Расчёт M и D [ID=9199] [ответ на 9196 ()]
Ср, 7 июля 2004 06:29 [#]
|
Пример
//каре
for i1:=0 to 12 do
for i5:=0 to 12 do if i5<>i1 then begin n:=n+1;
ArShaf[n,1]:=i1*4+1; ArShaf[n,2]:=i1*4+2;
ArShaf[n,3]:=i1*4+3; ArShaf[n,4]:=i1*4+4;
ArShaf[n,5]:=i5*4+Random(4)+1;
ArShaf[n,0]:=1;
end;
//фулл
for i1:=0 to 12 do
for i4:=0 to 12 do if i4<>i1 then begin n:=n+1;
p3:=Random(4)+1; p2:=Random(6)+1;
ArShaf[n,1]:=i1*4+ArMst3[p3,1]; ArShaf[n,2]:=i1*4+ArMst3[p3,2];
ArShaf[n,3]:=i1*4+ArMst3[p3,3]; ArShaf[n,4]:=i4*4+ArMst2[p2,1];
ArShaf[n,5]:=i4*4+ArMst2[p2,2]; ArShaf[n,0]:=6;
end;
...
ArShaf[n,0] это вес комбинации/4
|
|
BUGy
Re: Расчёт M и D [ID=9203] [ответ на 9196 ()]
Чт, 8 июля 2004 02:05 [#]
|
Никак не пойму как можно воспользоваться полученным массивом, но как я понял что для каждой комбинации составляется подобный.
И i1 здесь ранг каре и тройной в фуле, а i5 и i4 ранг остального. Тогда я даже не представляю как посчитать массив для комбинаций которые требуется усилять, и для без игры придётся считать массив для разных заманух.
|
|
korovin
Re: Расчёт M и D [ID=9205] [ответ на 9196 ()]
Чт, 8 июля 2004 06:21 [#]
|
//Прочее
for i1:=4 to 12 do
for i2:=3 to i1-1 do
for i3:=2 to i2-1 do
for i4:=1 to i3-1 do
for i5:=0 to i4-1 do begin n:=n+1;
p1:=Random(4)+1;
ArShaf[n,1]:=i1*4+p1; ArShaf[n,2]:=i2*4+p1;
ArShaf[n,3]:=i3*4+p1; ArShaf[n,4]:=i4*4+p1;
ArShaf[n,5]:=i5*4+p1; ArShaf[n,0]:=1; n:=n+1;
p2:=p1; p3:=p1; p4:=p1; p5:=p1;
while (p1=p2) and (p1=p3) and (p1=p4) and (p1=p5) do begin
p2:=Random(4)+1; p3:=Random(4)+1; p4:=Random(4)+1; p5:=Random(4)+1;
end;
ArShaf[n,1]:=i1*4+p1; ArShaf[n,2]:=i2*4+p2;
ArShaf[n,3]:=i3*4+p3; ArShaf[n,4]:=i4*4+p4;
ArShaf[n,5]:=i5*4+p5; ArShaf[n,0]:=255;
end;
Отдельно одномастные, отдельно все остальные. Заманухи на стрит описаны полностью, на флеш формируются среднестантистически из за случайной генерации мастей.
Мой цикл не описывает строго сжатие мастей, но практика показала что 30-50 циклов достаточно для оценки МО на любом боксе, а это 200-300 тысяч сдач всего.
|
|
Ivan
Я полностью симулирую игровой процесс. [ID=9206] [ответ на 9196 ()]
Чт, 8 июля 2004 12:01 [#]
|
Раздаю карты себе и дилеру, меняю, если нужно и смотрю, что получилось. Использую встроенный генератор случайных чисел и не вижу причин ему не доверять. Делаю именно так потому, что моя программа оценки позиции не дает абсолютно точного МО, но при этом в выборе ходов практически не ошибается.
www.gamsoft.ru
|
|
BUGy
Re: Я полностью симулирую игровой процесс. [ID=9207] [ответ на 9196 ()]
Пт, 9 июля 2004 00:10 [#]
|
Ivan, но ведь для принятия решения ты считаеш МО расклада, зачем симулировать игру. Ведь грубо говоря раздав себе большое число раз один и тот же расклад и следуя каждый раз оптимальному решению ты безисходно выйдеш на МО этого самого расклада. А следовательно суммируя каждый раз МО а не частный случай какого-то случайного расклада ты гораздо быстрее получишь сходимость.
Насчёт встроенного ГСЧ, он же получает каждое последующее число отталкиваясь от предидущего по какому-то закону, и я бы ему не доверил раздачу в комплексе.
|
|
Ivan
Я говорил о МО игры в целом. [ID=9208] [ответ на 9196 ()]
Вс, 11 июля 2004 06:41 [#]
|
МО одного расклада я считаю только для того, чтобы определить правильный ход. А это во многих случаях можно сделать и не зная точного МО расклада.
Встроенный ГСЧ можно модернизировать, если периодически (скажем раз в мин.) инициализировать его числом, зависящим от времени.
|
|
|