Monty Hall problem
by Anton_Diaz
HTML
<H1>Статистическая проверка парадокса Монти Холла</H1>
<p>Данная страница проверяет <a href="https://ru.wikipedia.org/wiki/Парадокс_Монти_Холла">парадокс Монти Холла</a> статистическим способом. Предполагается, что игрок всегда соглашался на предложение сменить выбор двери. При этом в статистике отражено и количество раз, когда игрок изначально угадал дверь с автомобилем. Прочая статистика приводится для проверки данных. Используйте кнопки с логом, что увидеть полные результаты (работает медленно!)</p>
<form>
<input name="start1" type="button" value="10000 игр">
<input name="start2" type="button" value="10 игр с логом">
<input name="start3" type="button" value="100 игр с логом">
<input name="start4" type="button" value="1000 игр с логом">
</form>
<table id="stats">
<tr>
<td id="game-count">
<td>повторов игры
<tr>
<td id="door-1-car-count">
<td>машина была за дверью № 1
<tr>
<td id="door-2-car-count">
<td>машина была за дверью № 2
<tr>
<td id="door-3-car-count">
<td>машина была за дверью № 3
<tr>
<td id="door-1-player-choice-count">
<td>игрок изначально выбрал дверь № 1
<tr>
<td id="door-2-player-choice-count">
<td>игрок изначально выбрал дверь № 2
<tr>
<td id="door-3-player-choice-count">
<td>игрок изначально выбрал дверь № 3
<tr class="highlight">
<td id="player-right-choice-count">
<td>игрок изначально угадал дверь с автомобилем
<tr>
<td id="door-1-caster-choice-count">
<td>ведущий открыл дверь № 1
<tr>
<td id="door-2-caster-choice-count">
<td>ведущий открыл дверь № 2
<tr>
<td id="door-3-caster-choice-count">
<td>ведущий открыл дверь № 3
<tr>
<td id="door-1-player-rechoice-count">
<td>игрок изменил выбор на дверь № 1
<tr>
<td id="door-2-player-rechoice-count">
<td>игрок изменил выбор на дверь № 2
<tr>
<td id="door-3-player-rechoice-count">
<td>игрок изменил выбор на дверь № 3
<tr class="highlight">
<td...
CSS
BODY, H1, TABLE, TR, TD, FORM, DIV, SPAN {
margin: 0;
padding: 0;
}
BODY {
font-family: Verdana, sans-serif;
font-size: 12px;
margin: 1em;
}
H1 {
font-size: 2em;
font-weight: bold;
margin: 0.5em 0;
}
P, FORM {
margin: 1em 0;
}
#stats {
border: none;
border-collapse: collapse;
font-family: inherit;
font-size: inherit;
display: none;
margin: 1em 0;
}
#stats.revealed {display: table;}
.highlight {
background: #ffffc0;
border: 1px solid #c0c0c0;
}
TD {
padding: 0 5px;
}
TD:first-child {
padding-right: 0;
text-align: right;
}
#sample {
display: none;
font-family: Consolas, monospace;
margin: 1em 0;
}
#sample.revealed {display: block;}
#log {
font-family: Consolas, monospace;
font-size: 30px;
margin: -0.33em;
}
.game {
border: 1px solid #c0c0c0;
float: left;
margin: 0.33em;
}
.cell {
margin: 4px 0;
}
.cell SPAN {
border: 1px solid #c0c0c0;
}
.player-choice {
background: #c0ffc0;
}
.caster-choice {
background: #ffc0c0;
}
.player-rechoice {
background: #40e040;
}
JavaScript
document.getElementsByName('start1')[0].addEventListener('click',function(){Start(false,10000)},false);
document.getElementsByName('start2')[0].addEventListener('click',function(){Start(true,10)},false);
document.getElementsByName('start3')[0].addEventListener('click',function(){Start(true,100)},false);
document.getElementsByName('start4')[0].addEventListener('click',function(){Start(true,1000)},false);
function Start(makeLog,games) {
var door = []; // двери
var remainDoor = []; // двери, которые может открыть ведущий (номера дверей - значения элементов массива, а не их номера)
var doorWithCar = 0; // номер двери с машиной
var playerChoice = 0; // номер двери, вабранной игроком
var casterChoice = 0; // номер двери, открытой ведущим
var playerReChoice = 0; // номер двери, ПЕРЕвабранной игроком
var doorCarCount = []; // сколько раз была машина в каждой из трех дверей (номер элемента в массиве - номер двери)
var playerChoiceCount = []; // сколько раз игрок выбрал каждую из трех дверей (номер элемента в массиве - номер двери)
var casterChoiceCount = []; // сколько раз ведущий открывал каждую из трех дверей (номер элемента в массиве - номер двери)
var playerReChoiceCount = []; // сколько раз игрок ПЕРЕвыбрал каждую из трех дверей (номер элемента в массиве - номер двери)
for (i = 0; i < 3; i++) { // заранее заполняем массивы нулями, так как undefined не инкрементируется
doorCarCount[i] = 0;
playerChoiceCount[i] = 0;
casterChoiceCount[i] = 0;
playerReChoiceCount[i] = 0;
}
var playerChoiceRightCount = 0; // сколько раз игрок изначально угадал дверь с машиной
var playerReChoiceRightCount = 0; // сколько раз игрок угадал бы дверь с машиной смены выбора
var getById = function(e) {return document.getElementById(e);}
var getByClass = function(e) {return document.getElementsByClassName(e);}
var gameElem; ...