Ответ (Re: Такой покер...) ID:9287 ответ на 9268 |
Сб, 2 октября 2004 22:41 [#] |
|
|
Приветствую!
Могу сообщить следующее. Попытка переписать программу для расчета игры 6 колодами оказалась безрезультатной. Уж больно много в коде заоптимизированных мест.
Пошел другим путем.
Korovin писАл следующее.
Цитата: | Причем вскрышки, пересечения, и прочая покерная атрибутика уходит на второй план. |
Цитата: | 2. Прикинуть МО без покупки шестой можно просто составив таблицу всех возможных рук и прогнав таблицу игрока против такойже таблицы дилера (выходом карт пренебрегаем). | Рассчитал функцию распределения. Провел статистическое моделирование.
Пустую комбинацию скидываем сразу. Все остальные комбинации закрываем. В случае одинаковых комбинаций у дилера и у игрока считаем, что вероятность проиграть или выиграть расклад постоянна и равна P=0.5.
При таких условиях МО на первом боксе при первой раздаче получается в районе -12%. (Сперва получалось +4.3%).
Код программы.
===>
<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Код:</div>
<pre class="alt2" dir="ltr" style="
margin: 0px;
padding: 4px;
border: 1px inset;
width: 640px;
height: 498px;
text-align: left;
overflow: auto">program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, Math;
label
l10;
var
dlr,plr: real;
Prob,SP: array[1..11] of double;
Pay: array[0..11] of integer;
id, ip: integer;
MO, bank, sumbank, sum2bank, s2bank: real;
i: integer;
begin
{ TODO -oUser -cConsole Main : Insert code here }
Prob[1]:=10128551040/23856384552;
Prob[2]:=21003598080/23856384552;
Prob[3]:=22567581072/23856384552;
Prob[4]:=23565387024/23856384552;
Prob[5]:=23644702224/23856384552;
Prob[6]:=23728591872/23856384552;
Prob[7]:=23815737216/23856384552;
Prob[8]:=23855520960/23856384552;
Prob[9]:=23856073512/23856384552;
Prob[10]:=23856353448/23856384552;
Prob[11]:=1;
SP[1]:=0;
SP[2]:=0;
SP[3]:=0;
SP[4]:=0;
SP[5]:=0;
SP[6]:=0;
SP[7]:=0;
SP[8]:=0;
SP[9]:=0;
SP[10]:=0;
SP[11]:=0;
Pay[0]:=-3;
Pay[1]:=1;
Pay[2]:=2;
Pay[3]:=4;
Pay[4]:=6;
Pay[5]:=10;
Pay[6]:=10;
Pay[7]:=10;
Pay[8]:=20;
Pay[9]:=100;
Pay[10]:=200;
Pay[11]:=200;
sumbank:=0;
sum2bank:=0;
for i:=1 to 2147483647-1 {100000000} do
begin
//Randomize;
bank:=0;
dlr:=Random;
for id:=1 to 11 do
begin
if dlr<Prob[id] then break;
end;
plr:=Random;
for ip:=1 to 11 do
begin
if plr<Prob[ip] then break;
end;
sp[ip]:=sp[ip]+1;
// сбрасываем граблю, если пустая
if ip=1 then
begin
bank:=bank-1;
goto l10;
end;
// нет игры у дилера
if id=1 then
begin
bank:=bank+1;
goto l10;
end;
// оплата комбинаций
if ip>id then
begin
bank:=bank+Pay[ip];
goto l10;
end;
if ip<id then
begin
bank:=bank-3;
goto l10;
end;
// ничья
if ip=id then
begin
if Random>0.5 then
begin
bank:=bank+Pay[ip];
goto l10;
end else
begin
bank:=bank-3;
goto l10;
end;
end;
l10:
sumbank:=sumbank+bank;
sum2bank:=sum2bank+bank*bank;
if (i mod 1000000)=0 then
begin
MO:=sumbank/i;
s2bank:=(i*sum2bank-sumbank*sumbank)/i/i;
writeln(i,' ',MO,' ',s2bank);
end;
end;
readln;
end.</pre>
</div><===
ЗЫ. Ввиду возможных человеческих и/или технических ошибок не могу гарантировать точность и полноту приведенных сведений и не несу ответственность за результат, связанный с использованием данной информации.
|
|
|