Просмотреть всю тему ""Набор карт дилером". Исходник для програмеров." »»
"Набор карт дилером". Исходник для програмеров.   ID:48306 Вт, 28 августа 2001 00:00 [#]
Pan Votruba Форумы Покер.ру
Наш "стойкий, оловянный солдатик" написал:
>> Не стыжусь выкладывать абсолютно. Все
>> замечания и нападки буду коллекционировать и
>> размещать на сайте. ... Пока еще ни кто мне не
>> прислал своих программных выкладок, ни
>> опровергающих ни подтверждающих мои цифры.
>> Но все говоруны знают, что эти цифры не
>> правильные. Не интересно, не пользуйся. Вот и
>> все. Вместо того что бы нападать, взял бы комп,
>> запрограммировал бы чего-нибудь и оперировал
>> бы своими цифрами. ... Докажи мне что я не прав.
>> Только докажи именно своими исследованиями.
>> Мне интересно, все кто говорят что эти цифры не
>> верны, откуда берут свои знание по БД. Из
>> интернета что ли?

ВСЕ источники хороши. Только надо КРИТИЧЕСКИ подходить к цифрам: ошибки могут быть у
каждого. А вот твердолобая позиция сводит на нет любой диалог...
Ниже приводится исходник кода для "Набора карт дилером". Рассмотрен тривиальный случай -
бесконечная, равномерная колода. Компилируйте, друзья, проверяйте-сравнивайте найденные
значения. Надеюсь, что это поможет Вам выработать устойчивый иммунитет против софт-
графоманов.

Удачи!
ПВ

======= Язык - С. Компилятор - любой из известных.
enum TYPE_COMB { LE16=-1, EQ17=0, EQ21=4, B_JACK=5, GE22=6 };
enum IND_CARDS { CARD_2=0, CARD_10=8, CARD_A=9 };

int ResultForDiler( int n_cards, int *Cards )
{ int ii, num_ace, sum_hard, sum_ace, sum_all;
for( ii=sum_hard=sum_ace=num_ace=0; ii<n_cards; !=CARD_A (sum_hard ) + 2)) cards[ii] if( ii++ {>= 22 )
return GE22;
} else
sum_ace += ((num_ace++)? 1 : 11);
}
sum_all = sum_hard + (((sum_hard + sum_ace) >= 22)? num_ace : sum_ace);
if( sum_all == 21 && n_cards == 2 )
return B_JACK;
return ((sum_all >= 22)? GE22 : (sum_all <= =1.; (++cards[n_cards-1] (res=ResultForDiler(n_cards, (sum_all-17)); ) * +=CurMul[n_cards-1]; 1 16)? : analhitdiler( cards))== cards[0]=is; cards[12]; cards[n_cards++]=CARD_2; curmul[12], curmul[n_cards]=CurMul[n_cards-1] curpart[0]=CurMul[0] curpart[12], curpart[n_cards]=(1./13.); curpart[n_cards]; double else for( if( ii=0; ii++ ii, ii<7; int is=CARD_2; is++ is, is<=CARD_A; le16 n_cards=1; n_cards, perccomb[10][7]; perccomb[is][ii]=0.; perccomb[is][res] res, void while( { }> CARD_A) ) {
if( --n_cards == 1 )
goto NEXT;
}
ii = n_cards - 1;
CurPart[ii] = ((Cards[ii] == CARD_10)? 4. : 1.)/13.;
CurMul[ii] = CurMul[ii-1] * CurPart[ii];
}
}
NEXT:;
}
// Здесь возможна печать найденных параметров:
// массив PercComb[10][7] соответствует таблице
// "Набор карт дилером", представленной на сайте
// www.lig.ru Отличие только при переборе на 8-ке. -
// На сайте опечатка: указано 24.27, правильно -
// 24.47
}

void main( void )
{ AnalHitDiler(); }