Просмотреть всю тему "Такой покер..." »»
Ответ (Re: Такой покер...)   ID:9287   ответ на 9268 Сб, 2 октября 2004 22:41 [#]
Mariner Закрыть блок (иконки IM) Форумы CasinoGames
Приветствую!

Могу сообщить следующее. Попытка переписать программу для расчета игры 6 колодами оказалась безрезультатной. Уж больно много в коде заоптимизированных мест. Smile

Пошел другим путем.
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><===

ЗЫ. Ввиду возможных человеческих и/или технических ошибок не могу гарантировать точность и полноту приведенных сведений и не несу ответственность за результат, связанный с использованием данной информации.

Вложение: Вероятности.xls
(Размер: 16.00KB, Загружено 192 раз)