При нажатии на кнопку выполняется эта процедура. В ней проверяется сколько игр выиграет игрок А играя с игроком Б с помощью рейтинга ЭЛО. На моей машине в 10 000 игр выигрывает игрок А
b win 430 1085,21923828125
a win 9571 1816,78234863281
b win 216 953,702209472656
a win 9785 1948,30261230469
b win 860 1079,17883300781
a win 9141 1822,82055664063
b win 355 983,212280273438
a win 9646 1918,7890625
b win 286 936,729797363281
a win 9715 1965,2705078125
b win 370 950,199951171875
a win 9631 1951,7978515625
Почему так часто выигрывает А?Цитата:
{
int cc,i,j,k,bw,aw;
float ea,eb,a,b ;
bw=aw=0; //kolichestvo viigrannih igr
a=1313; //Reyting ELo igroka A
b=1589;//Reyting ELo igroka B
cc=10000;
for(i=0;i<=cc;i++){
ea = cc/(1+pow(10,(b-a)/400)); //17 igr iz 100 Eta formula ELO na wiki est'
eb = cc/(1+pow(10,(a-b)/400)); //83 igri iz 100
Randomize();
k = rand() % cc;
if (k>ea){ //b win
b=b+15*(1-(eb/cc));
a=a+15*(0-(ea/cc));
bw++;
} else{ //a win
a=a+15*(1-(ea/cc));
b=b+15*(0-(eb/cc));
aw++;
}
}
Memo1->Lines->Add("b win "+IntToStr(bw)+" "+FloatToStr(b));
Memo1->Lines->Add("a win "+IntToStr(aw)+" "+FloatToStr(a));
}