Author: Uri Blass
Date: 20:53:58 10/30/05
Go up one level in this thread
On October 30, 2005 at 23:23:03, Uri Blass wrote:
>On October 30, 2005 at 13:14:28, Graham Banks wrote:
>
>>So I don't see any point in running 30 game matches in any future Knockout
>>tournaments I may decide to run when 20 game matches are likely to produce the
>>same results.
>>
>>I know that some of you will pull out the old statement about 20 or 30 games
>>between two engines close in strength not saying anything, but have a good hard
>>look at some of the match ups that occurred in this tournament.
>>I'm not saying you're wrong (because you're not!), but it wasn't borne out in
>>this tournament.
>
>There was no time when the result after 20 games was 10-10 in all 39 matches?
>
>Uri
I can add that I did 10000 matches by monta carlo experiment
In 7130 matches the winner after 20 games was the same as the winner after 30
games
In 1064 matches the winner was the opposite
In 1083 match there was draw after 20 games and in the rest of the matches there
was a draw after 30 games
Here is the source of the match(I assumed probability of 40% for white 30% for
draw and 30% for black in every game)
#include "stdio.h"
#include "stdlib.h"
int calculatesidetowin()
{
int num=rand();
if (num<32767*0.3)
return 0;//black wins
if (num<32767*0.6)
return 1;//draw
return 2;//white wins
}
int calculate2gamematch()
{
int num1=calculatesidetowin();
int num2=calculatesidetowin();
return num1+2-num2;//number of half points of player A in a match of 2 games;
}
int samewinner()
{
int sum=0;
int i,winner;
for (i=0;i<10;i++)
sum+=calculate2gamematch();
if (sum>20)
winner=1;//side A wins
if (sum<20)
winner=2;//side B wins
if (sum==20)
winner=3;//draw
if (winner==3)
return 2;//no winner after 20 games
for (i=0;i<5;i++)
sum+=calculate2gamematch();
if (sum==30)
return 3;//no winner after 30 games
if ((sum>30)==(winner==1))
return 0;//same winner
return 1;//opposite winner
}
int main(int argc,char* argv[])
{
int i=0;
int num;
int k[4]={0,0,0,0};
while (i<10000)
{
num=samewinner();
k[num]++;
i++;
}
printf("same winner=%d opposite winner=%d draw after 20 game=%d draw after 30
games=%d",k[0],k[1],k[2],k[3]);
return 0;
}
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.