Всем привет.
Сейчас воскресное утро, я не выспался и откровенно туплю. На днях разговаривали с коллегой про задачу о 10 студентах, про которую я писал ранее. Вот ссылка на этот пост. И мне он рассказал о похожей задаче Монти Холла, которую я сегодня и решил повторить и сделать симуляцию, чтобы проверить в реальности данный эффект.
Задача состоит в том, что перед вам три двери, за одной скрыт приз. Вы выбираете открыть одну из дверей. Далее ведущий открывает какую-то другую дверь, за которой пустота. Далее вы можете выбрать другую дверь или остаться.
Переметнувшиеся удивительным образом имеют большие шансы на успех.
Честно скажу я сегодня туплю по полной программе, во-первых, я не совсем понял почему у переметнувшихся шанс больше, наилучшее объяснение, что если бы дверей была 1000 и ведущий убрал бы 900 дверей, дальше там пошла более сложная стратегия, когда ведущий пытается запутать, а игрок обязательно выиграть, в эту часть я уже не стал погружаться, но она нам не нужна. Во-вторых, и в симуляции, что-то получилось не совсем правильно, т.е. вероятность должна быть 33,3% у стойких и 66,6% у переметнувшихся, и я пока не разобрался, поэтому публикую код, если кто-то заметит ошибку, буду очень признателен. У меня же получается 38% и 62%. Ссылка на симуляцию.
nmb += 1;
door_chk = Math.round(2*Math.random(), 0); //Закладываем приз
door[door_chk] = 1; //массив просто так создал в итоге не использовал
door_wish = Math.round(2*Math.random(), 0); //Выбираем случайным образом какую дверь открыть
while (bln==false) { //цикл пока условия не выполнится
door_host = Math.round(2*Math.random(), 0); //случайным образом ведущий открывает дверь
if ((door_host!=door_chk)&&(door_host!=door_wish)) bln = true; //Проверяем, что это не которую пожелали и не которая где лежит приз
} // А это вообще зачем мне надо???
if (door_wish==door_chk) win_stay += 1; else win_change += 1; //если дверь совпала с изначальным желанием значит выиграл который стоит на своем, в обратном случае выиграл переменивший желание
document.all.txt1.innerText = 'Prize in - ' + (door_chk+1) + ', DOORS Massive - ' + door;
document.all.txt2.innerText = 'Door wish to open - ' + (door_wish+1);
document.all.txt3.innerText = 'Door host open - ' + (door_host+1);
document.all.txt4.innerText = "WIN stay - " + win_stay + ", WIN change - " + win_change + ", games total - " + nmb + ", the stay won " + (door_wish==door_chk);
document.all.txt5.innerText = "WIN stay rate - " + win_stay/nmb + ", win change rate - " + win_change/nmb;
bln = false;
door[door_chk]=0;
