Computer Chess Club Archives


Search

Terms

Messages

Subject: Analysing Deep Junior in Bilbao with "Monte Carlo Simulation"

Author: Graham Laight

Date: 03:45:50 10/13/04

Go up one level in this thread


On October 12, 2004 at 13:07:22, Omid David Tabibi wrote:

>Reading comments like yours, I come to the conclusion that an Introduction to
>Statistics course should be made mandatory as a prerequisite for joining CCC...

OK - here's a program to use the statistical technique called, "Monte Carlo
Simulation". I hope that this satisfies everyone that I am not statistically
illiterate.

To use:

1. Paste the program below into Notepad (or Vuepad if you're using Unix)

2. Save it as c:\bilbao.htm

3. In your web browser, type "c:\bilbao.htm" in the address bar

enjoy!

-g

    ------ Program ------


<html>
<head>
<title>Analyse Junior's Poor Performance At Bilbao Oct 2004</title>
<SCRIPT LANGUAGE="JavaScript">

function workItOut()
{

var oLoop = 1, iLoop = 1, wProb = 0,dProb = 0, lProb = 0, score = 0;
var randy = 0;

oLoop = Number(document.game.userInput.value);

if ((oLoop < 1) || (oLoop > 1000000) || (oLoop - Math.ceil(oLoop) != 0))
	 {
	 alert("No. simulations should be an integer between 1 and 1,000,000.");
	 document.game.result.value = "";
	 return;
	 }

wProb = Number(document.game.winProb.value);

if ((wProb < 0) || (wProb > 100) || (wProb - Math.ceil(wProb) != 0))
	 {
	 alert("The winning probability should be an integer between 0 and 100.");
	 document.game.result.value = "";
	 return;
	 }

dProb = Number(document.game.drawProb.value);

if ((dProb < 0) || (dProb > 100) || (dProb - Math.ceil(dProb) != 0))
	 {
	 alert("The drawing probability should be an integer between 0 and 100.");
	 document.game.result.value = "";
	 return;
	 }

lProb = Number(document.game.loseProb.value);

if ((lProb < 0) || (lProb > 100) || (lProb - Math.ceil(lProb) != 0))
	 {
	 alert("The losing probability should be an integer between 0 and 100.");
	 document.game.result.value = "";
	 return;
	 }

iLoop = Number(document.game.noGames.value);

if ((iLoop < 1) || (iLoop > 1000) || (iLoop - Math.ceil(iLoop) != 0))
	 {
	 alert("Number of games should be an integer between 0 and 1000.");
	 document.game.result.value = "";
	 return;
	 }

if (wProb + dProb + lProb != 100)
	 {
	 alert("The 3 percentage probabilities must add up to 100");
	 document.game.result.value = "";
	 return;
	 }

wProb = wProb / 100;
dProb = dProb / 100;
lProb = lProb / 100;

var results = new Array(iLoop * 2);

for (i = 0; i <= iLoop * 2; i++)
		results[i] = 0;

for (i = 1; i <= oLoop; i++)
  {
	score = 0;
  for (j=1; j <= iLoop; j++)
			{
			randy = Math.random();
			if (randy < wProb)
				 score = score + 2;
			else
					if (randy < wProb + dProb)
						 score++;
			}
	results[score]++;
	}

var message = "";
for (i = 0; i <= iLoop * 2; i++)
		{
		if (results[i] > 0)
			 {
			 message = message + "DJ won " + i/2 + " points in ";
			 message = message + Math.round((results[i]/oLoop)*10000)/100;
			 message = message + "% of the tournaments\n"
			 }
		}

document.game.result.value = message;

} // end of workItOut function

</SCRIPT>
</head>
<body>
<form name="game">
<big><b><u>
<center>Analyse Junior's Poor Performance At Bilbao Oct 2004</center>
</u></b></big><small><br /><br />
<b><u>Explanation:</u></b><font color="#ffffff">..</font>At the Bilbao chess
competition in Bilbao in Oct 2004, Junior unexpectedly produced a result which
was much worse than the other computers taking part. This program helps us to
investigate the extent to which this could have been just plain bad luck.
<br /><br />
Type in the percentage probabilities for Junior winning, losing and drawing
below (the 3 numbers must add up to 100), then click on "Calculate".
The answer will appear in the "Result" field.</small><br /><br />
<center><input type="button" name="Start Simulation" value="Calculate"
 onclick="workItOut()" /></center><br /><br />
<table cellspacing="15" title="Results">
<tr><td><b>Number of simulations (0 < integer < 1,000,000):</b></td>
<td><input name="userInput" value="100000" size="65" type="text" />
</td></tr>
<tr><td><b>Percentage probability of game win (0 < integer < 100):</b></td>
<td><input name="winProb" value="10" size="65" type="text" />
</td></tr>
<tr><td><b>Percentage probability of game draw (0 < integer < 100):</b></td>
<td><input name="drawProb" value="70" size="65" type="text" />
</td></tr>
<tr><td><b>Percentage probability of game loss (0 < integer < 100):</b></td>
<td><input name="loseProb" value="20" size="65" type="text" />
</td></tr>
<tr><td><b>Number of games in tournament (0 < integer < 1000):</b></td>
<td><input name="noGames" value="4" size="65" type="text" />
</td></tr>
<tr><td><b>Result:</b></td><td>
<textarea cols="49" rows="10" name="result" readonly="readonly"
 title="Simulation Results">
</textarea></td></tr></table>
<br /><br />
<small>©Graham Laight 2004<font color="white">.......</font>
<a href="mailto:GHL@QAD.COM">Write To The Author</a>
<font color="white">.......</font>
<a href="http://mysite.wanadoo-members.co.uk/grahamlaight/index.html">
Home page</a></small>
</form>
</body>
</html>



This page took 0.01 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.