Парадокс Монти Холла однако…

Jun 09, 2008 00:17


Запись опубликована Дмитрий Цой: жизненно.Вы можете оставить комментарии здесь или тут

Совсем недавно узнал о таком понятии теории вероятности, как Парадокс Монти Холла.

Вероятно, для многих людей - это очевидное понятие, но для меня стало настоящим открытием.

Как всегда, некоторые теоретические сведения с Wikipedia (ссылка на статью целиком):

Парадокс Монти Холла - одна из известных задач теории вероятностей, решение которой, на первый взгляд, противоречит здравому смыслу. Задача формулируется как описание гипотетической игры, основанной на американском телешоу «Let’s Make a Deal», и названа в честь ведущего этой передачи. Наиболее распространенная формулировка этой задачи, опубликованная в 1990 году в журнале Parade Magazine, звучит следующим образом:

Представьте, что вы стали участником игры, в которой вам нужно выбрать одну из трех дверей. За одной из дверей находится автомобиль, за двумя другими дверями - козы. Вы выбираете одну из дверей, например, номер 1, после этого ведущий, который знает, где находится автомобиль, а где - козы, открывает одну из оставшихся дверей, например, номер 3, за которой находится коза. После этого он спрашивает вас, не желаете ли вы изменить свой выбор и выбрать дверь номер 2. Увеличатся ли ваши шансы выиграть автомобиль, если вы примете предложение ведущего и измените свой выбор ?

Хотя данная формулировка задачи является наиболее известной, она несколько проблематична, поскольку оставляет некоторые важные условия задачи неопределенными. Ниже приводится более полная формулировка.

При решении этой задачи обычно рассуждают примерно так: после того, как ведущий открыл дверь, за которой находится коза, автомобиль может быть только за одной из двух оставшихся дверей. Поскольку игрок не может получить никакой дополнительной информации о том, за какой дверью находится автомобиль, то вероятность нахождения автомобиля за каждой из дверей одинакова, и изменение первоначального выбора двери не дает игроку никаких преимуществ. Однако такой ход рассуждений неверен. Если ведущий всегда знает, за какой дверью что находится, всегда открывает ту из оставшихся дверей, за которой находится коза, и всегда предлагает игроку изменить свой выбор, то вероятность того, что автомобиль находится за выбранной игроком дверью, равна 1/3, и, соответственно, вероятность того, что автомобиль находится за оставшейся дверью, равна 2/3. Таким образом, изменение первоначального выбора увеличивает шансы игрока выиграть автомобиль в 2 раза. Этот вывод противоречит интуитивному восприятию ситуации большинством людей, поэтому описанная задача и называется парадоксом Монти Холла.

(По ссылке полная статья)

Так вот, для меня этот парадокс совсем-совсем неочевиден, и мне стало интересно попробовать его подтвердить (если можно так выразиться) эмпирическим образом.

Для этого было написано маленькое php приложение. Те, кому это интересно, могут попробовать выполнить его на своей машине. Парадокс ожидаемо подвердился, но от того для меня более понятным не стал

Ниже листинг программы

/*
Представьте, что вы стали участником игры, в которой вам нужно выбрать
одну из трех дверей. За одной из дверей находится автомобиль, за двумя
другими дверями - козы. Вы выбираете одну из дверей, например, номер 1,
после этого ведущий, который знает, где находится автомобиль, а где -
козы, открывает одну из оставшихся дверей, например, номер 3, за которой
находится коза. После этого он спрашивает вас, не желаете ли вы
изменить свой выбор и выбрать дверь номер 2. Увеличатся ли ваши шансы
выиграть автомобиль, если вы примете предложение ведущего и измените
свой выбор ?
*/

//количество эмпирических выборок
$iters = 10000;

//количество вариантов выбора (в изначальной задаче - 3)
$number_of_choices = 3;

//угадали, если изменим решение после открытия всех дверей, кроме двух
$true = 0;

//не угадали, если изменим решение после открытия всех дверей, кроме двух
$false = 0;

//начинаем выборку
for ($i = 0; $i< $iters; $i++)
{
 //правильный ответ - случайное число от 1 до $number_of_choice
 $answer = rand(1,$number_of_choices);

//наш выбор - случайно число от 1 до $number_of_choice
 $choice = rand(1,$number_of_choices);

//массив открытых вариантов
 $opened = array();

//открываем все варианты, кроме нашего выбора и правильного ответа
 //либо, если наш выбор = правильный ответ, правильный ответ и любой неправильный вариант
 for ($j=0; $j< $number_of_choices - 2; $j++)
 {
  $generated = 0;
  while (($generated!=0) && ($generated!=$answer) &&($generated!=$choice))
  {
   $generated = rand(1, $number_of_choices);
  }

$opened[] = $generated;
 }
 //теперь проверяем, что будет, если мы изменим решение
 if ($choice == $answer)
 {
  //если мы изначально угадали
  $false++;
 }
 else
 {
  //если мы изменили решение
  $true++;
 }
}

echo "Если мы изменим решение, то угадаем с вероятностью:
$true/$iters
";
echo "Если мы сохраним изначальное решение, то угадаем с вероятностью:
$false/$iters
";

?>

php, Программирование, теория вероятности

Previous post Next post
Up