[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Парадокс Монти Холла
LRCenter
Попалась мне тут в руки одна занятная книга:
"Несовершенная случайность. Как случай управляет нашей жизнью", автор некто Млодинов.

Занятная книжка, почитать на досуге, научно-популярная о теории вероятности.
Особенно заинтересовала задача под названием "Парадокс Монти Холла".

Суть задачи и её решение оказалось подробно расписано в википедии:
http://ru.wikipedia.org/wiki/Парадокс_Монти_Холла

Но я не могу поверить в такое просто так. Решил написать математическую модель на php.

И то ли с логикой напутал, то ли что еще что но код не пашет. Не могу понять в чем дело.


#------------Вариант 1-ый:----------

while($loop1 <= "10000"){
#Есть 3 двери. За одной из них приз.
$dver_priz=rand(1,3);


#Ведущий говорит игроку что что он должен выбрать дверь - игрок выбирает.
$dver_igrok=rand(1,3);


#Ведущий, зная за какой дверью приз, открывет ту дверь за которой приза нет, и которую не выбрал игрок...
if ($dver_igrok == "1") {while($show_dver!=$dver_priz){$show_dver=rand(2,3);}}
if ($dver_igrok == "3") {while($show_dver!=$dver_priz){$show_dver=rand(1,2);}}
if ($dver_igrok == "2") {while($show_dver!=$dver_priz){$fi=rand(0,1); if($fi=="1"){$show_dver="1";}else{$show_dver="3";}}}


#И говорит: вы оставите свой выбор пржним или поменяете дверь? Игрок оставляет свой выбор прежним, и...
if ($dver_priz==$dver_igrok) {$win="1";} else {$win="0";}

#считаем
if ($win="1") {$total_win1=$total_win1 + 1;}
else {$total_loose1=$total_loose1 + 1;}
$loop1=$loop1 + 1;
}



#-----------Вариант 2-ой:-----------
while($loop2<="10000"){

#Есть 3 двери. За одной из них приз.
$dver_priz=rand(1,3);


#Ведущий говорит игроку что что он должен выбрать дверь - игрок выбирает.
$dver_igrok=rand(1,3);


#Ведущий, зная за какой дверью приз, открывет ту дверь за которой приза нет, и которую не выбрал игрок...
if ($dver_igrok == "1") {while($show_dver!=$dver_priz){$show_dver=rand(2,3);}}
if ($dver_igrok == "3") {while($show_dver!=$dver_priz){$show_dver=rand(1,2);}}
if ($dver_igrok == "2") {while($show_dver!=$dver_priz){$fi=rand(0,1); if($fi=="1"){$show_dver="1";}else{$show_dver="3";}}}


#И говорит: вы оставите свой выбор пржним или поменяете дверь? Игрок меняет свой выбор
if ($dver_igrok == "1") {if($show_dver=="2"){$dver_igrok2="3";} else{$dver_igrok2="2";}}
if ($dver_igrok == "2") {if($show_dver=="1"){$dver_igrok2="3";} else{$dver_igrok2="1";}}
if ($dver_igrok == "3") {if($show_dver=="1"){$dver_igrok2="2";} else{$dver_igrok2="1";}}

#и...
if ($dver_priz==$dver_igrok) {$win="1";} else {$win="0";}

#считаем
if ($win="1") {$total_win2=$total_win2 + 1;}
else {$total_loose2=$total_loose2 + 1;}
$loop2=$loop2 + 1;
}



#-----------Подводим и выводим ститистические итоги)))-----------

$pr_total_win1=$total_win1/($loop1/100); $pr_total_win1=round($pr_total_win1, 2);
$pr_total_loose1=$total_loose1/($loop1/100); $pr_total_loose1=round($pr_total_loose1, 2);

$pr_total_win2=$total_win2/($loop2/100); $pr_total_win2=round($pr_total_win2, 2);
$pr_total_loose2=$total_loose2/($loop2/100); $pr_total_loose2=round($pr_total_loose2, 2);

echo "Игрок не поменял свой выбор: $total_win1 побед($pr_total_win1 %) / $total_loose1 поражений($pr_total_loose1 %) из $loop1 попыток(100%).<br>
Игрок поменял свой выбор:
$total_win2 побед($pr_total_win2 %) / $total_loose2 поражений($pr_total_loose2 %) из $loop2 попыток(100%).
"
;




Спустя 19 минут, 24 секунды (12.10.2010 - 10:24) Гость_Michael написал(а):
Ты серьезно думаешь, что тут кому то по приколу разбираться в этой мат. модели просто чтобы проверить твою замученную кодинку wink.gif ?

Спустя 2 минуты, 14 секунд (12.10.2010 - 10:26) LRCenter написал(а):
Ну, может кому интересно, вопрос то практический. Надеюсь энтузиасты не перевелись)

Спустя 23 минуты, 40 секунд (12.10.2010 - 10:50) linker написал(а):
Одна из ошибок в том, что ты не учитываешь, что ведущий открывает одну из дверей за которой нет приза.

Спустя 14 минут, 35 секунд (12.10.2010 - 11:04) Nord написал(а):
Мой вариант smile.gif


$loses1 = 0;
$wins1 = 0;
for ($i = 0 ; $i < 10000; $i++){
// За какой дверью стоит автомобиль
$win_door = rand(1, 3);
// Какую дверь выбрал игрок
$user_door = rand(1, 3);
// Ведущий выбрал какую-то дверь...

// Игрок меняет свой выбор:

if ($user_door == $win_door) $loses1++;
else $wins1++;
}

$loses2 = 0;
$wins2 = 0;
for ($i = 0 ; $i < 10000; $i++){
// За какой дверью стоит автомобиль
$win_door = rand(1, 3);
// Какую дверь выбрал игрок
$user_door = rand(1, 3);
// Ведущий выбрал какую-то дверь...

// Игрок не меняет свой выбор:

if ($user_door == $win_door) $wins2++;
else $loses2++;
}

echo "Когда игрок меняет выбор:<br>Побед: $wins1, Поражений: $loses1, Соотношение: " . ($wins1 / $loses1);
echo "<br><br>";
echo "Когда игрок не меняет выбор:<br>Побед: $wins2, Поражений: $loses2, Соотношение: " . ($wins2 / $loses2);

// Когда игрок меняет выбор:
// Побед: 6670, Поражений: 3330, Соотношение: 2.003003003
//
// Когда игрок не меняет выбор:
// Побед: 3326, Поражений: 6674, Соотношение: 0.498351813006


[/php]

А в вашем варианте как-то слишком много циклов и один из них, по-моему, бессконечный

Спустя 10 минут, 24 секунды (12.10.2010 - 11:15) LRCenter написал(а):
//    Когда игрок меняет выбор:
// Побед: 6670, Поражений: 3330, Соотношение: 2.003003003
//
// Когда игрок не меняет выбор:
// Побед: 3326, Поражений: 6674, Соотношение: 0.498351813006


Странный результат какой-то blink.gif . По идее вероятность выигрыша должна быть

1\2 - если меняет, у вас 2\1
1\3 - если не меняет, у вас 1\2

что-то не то.

Спустя 23 минуты, 24 секунды (12.10.2010 - 11:38) Nord написал(а):
Это соотношение побед и поражений, вероятность как раз составляет:
$wins1 / 10000 = 0.6670 = 2/3
$loses1 / 10000 = 0.3330 = 1/3

Просто не подумавши вывел его вместо вероятности

Спустя 15 минут, 51 секунда (12.10.2010 - 11:54) LRCenter написал(а):
Все равно, ниче не понимаю, вероятность должна распределятся так:

Не меняем дверь - шанс выиграть должен быть - 33% т.е. 1/3 (тут все правильно)
Меняем дверь - шанс выиграть должен быть - 50% т.е. 1/2 (а у вас 2/3 т.е. 66%)

Че то с логикой тут не то sad.gif

Спустя 42 минуты, 25 секунд (12.10.2010 - 12:37) vasa_c написал(а):
Цитата
Не меняем дверь - шанс выиграть должен быть - 33%
Меняем дверь - шанс выиграть должен быть - 50%

Куда девались остальные мои шансы?

Спустя 3 минуты, 24 секунды (12.10.2010 - 12:40) LRCenter написал(а):
Как куда?

Не меняем дверь - шанс выиграть должен быть - 33% (66% (почти 67 - 66,6 в периоде) -проиграть)
Меняем дверь - шанс выиграть должен быть - 50% (50%-проиграть)

Спустя 14 минут, 26 секунд (12.10.2010 - 12:54) vasa_c написал(а):
Два варианта:
не меняем: 33
меняем: 50

где остальное?

Спустя 12 минут, 47 секунд (12.10.2010 - 13:07) LRCenter написал(а):
остальное что?
Не понял суть вопроса.

Спустя 8 минут, 6 секунд (12.10.2010 - 13:15) DedMorozzz написал(а):
Это было в фильме "21" smile.gif
Там используеться момент, который не оговаривается. Есть 3 двери. за 1 - приз
Шанс угадать приз = 33%
Но когда ведущий говорит, что я покажу что тут нету приза, показывает на дверь 2. То тут уже другая задача и другое условие.
Не изменив своего решения, шанс будет 33% лишь для первонаальной задачи.
А для новой - такие же 50%. Тут идёт игра условий.

Спустя 10 минут, 40 секунд (12.10.2010 - 13:26) Raskolnikoff написал(а):
LRCenter
Вероятность выигрыша при замене двери составляет как раз 66%. Это даже в Вики написано, по той ссылке, что вы дали.
Цитата (vasa_c @ 12.10.2010 - 12:54)
Два варианта:
не меняем: 33
меняем: 50

где остальное?

Так складывать некорректно. Вы пытаетесь сложить вероятности для событий из опытов с разными условиями. В такой сумме может быть любое число, от 0 до 2(или 200 в данном случае).

Спустя 1 минута, 48 секунд (12.10.2010 - 13:28) Raskolnikoff написал(а):
DedMorozzz
Тут разговор по моему как раз и ведется про первоначальную задачу.

Спустя 29 секунд (12.10.2010 - 13:28) LRCenter написал(а):
DedMorozzz
Совершенно верно, дело в том что меняя выбор вы уменьшаете пространство вариантов.

Легче всего это понять если представить что дверей не 3, а 100.

вы выбираете одну, ведущий закрывает 98, и предлагает переменить выбор.

Если вы меняете дверь - шансы выиграть будут 1\2, если оставляете выбор прежним шансы остаются 1\100. Мозгу трудно в это поверить, для доказательства требуется машинная логика, а конкретнее математическая модель.

В начале 90-х ведущий математик массачусетского тех. института, руководитель кафедры матаматики, не соглашался с этим пока не построили такую модель и прогнав ее несолько тысяч раз (для выравнивания статистической прогрешности), доказали справедливость парадокса.

Спустя 8 минут, 43 секунды (12.10.2010 - 13:37) vasa_c написал(а):
Цитата
Так складывать некорректно.

Как некорректно?
У меня два варианта:
1. Оставить дверь
2. Поменять дверь
За каждой есть шанс получить приз. Сумма шансов должна быть 1.

Спустя 31 секунда (12.10.2010 - 13:37) LRCenter написал(а):
Raskolnikoff

Да точно, чето я зафэйлился rolleyes.gif
Вот что значит несколько дел делать разом.

Nord

Все верно. Таким образом вы эмпирически доказали парадокс Монти Холла с одной стороны, а с другой показали что функция rand() в php, работает в соответствии с распределением Бернулли, т.е. другими словами истинно случайно, что показывает более глубокую природу мира и случайности, а это пугает.

Спустя 2 минуты, 22 секунды (12.10.2010 - 13:40) LRCenter написал(а):
vasa_c

Вероятности складываюстся перемножением числителей и знаменателей, как простые дроби.

Спустя 2 минуты, 1 секунда (12.10.2010 - 13:42) vasa_c написал(а):
Цитата
Вероятности складываюстся перемножением числителя и знаменателя, как простые дроби.

Простите, что?
Так каков ваш ответ на вторую дверь? 50 или 66?

Спустя 4 минуты, 40 секунд (12.10.2010 - 13:46) netruxa написал(а):
Действительно, парадокс smile.gif

Спустя 1 минута, 54 секунды (12.10.2010 - 13:48) vasa_c написал(а):
Цитата
Если вы меняете дверь - шансы выиграть будут 1\2, если оставляете выбор прежним шансы остаются 1\100. Мозгу трудно в это поверить, для доказательства требуется машинная логика, а конкретнее математическая модель.

Вы заблуждаетесь, там будет отнюдь не 1/2.

Спустя 1 минута, 49 секунд (12.10.2010 - 13:50) DedMorozzz написал(а):
smile.gif Жесть. Хватит путать услвоия. Есть ВСЕГДА 2 условия в рамках данной задачи. До открытия двери и после.
1е условие шанс всегда 33%, сколько не меняй двери
2е - 50% КАЖДОЙ двери. Сумарно шанс угадать = 100% из всех дверей в сумме.
Но вы тут вспоминаете прошлую задачу и берёте оттуда процент = 33 и 2й присваеваете значение в 66%(не 50 кстати). А это в корне не верно. Ибо процент поменялся со сменой условия задачи.
Шас из 2х дверей открыть нужную =50%, а не 66% и 33%. А вы пытаетесь это доказать, запутавшись в условиях и перемешав их между собой.

Спустя 1 минута, 10 секунд (12.10.2010 - 13:51) vasa_c написал(а):
DedMorozzz, нет, там будет 33 и 66 smile.gif

Спустя 4 минуты, 17 секунд (12.10.2010 - 13:56) linker написал(а):
Вероятность 1/2 будет относительно выбора поменять дверь или оставить выбранную. Вероятность 1/98 будет относительно исходной точки.

Спустя 9 минут, 17 секунд (12.10.2010 - 14:05) vasa_c написал(а):
Цитата
Но вы тут вспоминаете прошлую задачу и берёте оттуда процент = 33 и 2й присваеваете значение в 66%(не 50 кстати). А это в корне не верно. Ибо процент поменялся со сменой условия задачи.

Когда вы выбрали в первый раз, то для первой двери вероятность стала 33%. Она такой и останется до конца.

В том и смысл, что теория вероятности работает там где всё случайно и изолировано.

А когда ведущий открывает дверь на основании имеющейся у него информации, передавая её тем самым вам, а вы свой второй эксперимент устраиваете сохраняя информацию о первом, то здесь теория вероятности ни при делах.

И парадокса никакого нет.

И rand() не имеет к "истинно случайному" никакого отношения.

Спустя 5 минут, 50 секунд (12.10.2010 - 14:11) netruxa написал(а):
сам проверил
у меня из 10000 запусков получилось
l=66650 w=33349 //не меняет
l=32904 w=67095 //меняет дверь

Спустя 6 минут, 32 секунды (12.10.2010 - 14:17) Raskolnikoff написал(а):
vasa_c
Не должна быть вероятность равна одному. Она будет равно одному в одном опыте при одинаковых условиях. Меняя дверь, вы меняеете условия опыта. И эти вероятности никак не связаны между собой. Фактически, это тоже самое, что складывать вероятность джордана забить трехочковый и гитлера выиграть вторую мировую, и утверждать, что сумма будет равна одному. Просто в данной задаче сумма получается действительно равна одному.
DedMorozzz
что вы пристали со своими 50%. Вы пытаетесь выразить свое субъективное восприятие ситуации. Это весьма нелегко понять. Почитайте объяснение, приведенное на вики по ссылке в первом посте.
И вообще, интерес парадокса в том, что выбирая стратегию перемены двери игрок увеличивает вероятность выигрыша в 2 раза по стравнению со стратегией, в которой он не меняет дверь.

Спустя 6 минут, 35 секунд (12.10.2010 - 14:24) vasa_c написал(а):
Цитата
Она будет равно одному в одном опыте при одинаковых условиях.

условия одинаковые. Два варианта: 1.оставить предыдущую дверь, 2. выбрать вторую.
сумма вероятностей будет 1.

а в соответствии с вашими же словами:
Цитата
игрок увеличивает вероятность выигрыша в 2 раза по стравнению со стратегией, в которой он не меняет дверь.

эти вероятности будут 33 и 67.

Спустя 7 минут, 3 секунды (12.10.2010 - 14:31) vasa_c написал(а):
Raskolnikoff, вот мы выбрали одну из трёх дверей.
Какая вероятность того что за ней есть то что нам нужно? 1/3

После чего ведущий что-то там открыл, что-то предложил, сплясал голый на столе, позвал цыган с медведями, провёл ещё десяток экспериментов.
Как это повлияло на вероятность нахождения автомобиля за дверью?
Никак, если только цыгане его не умыкнули.
Если же он стоит, как и стоял, вероятность всё та же.

Спустя 4 минуты, 32 секунды (12.10.2010 - 14:35) Raskolnikoff написал(а):
я же и не спорю, что эти вероятности будут такими)
Возможно, вы не правильно понимаете что такое опыт в теории вероятностей.
Здесь два разных опыта с разными условиями.
В первом опыте игрок просто выбирает дверь. Вероятность выиграть = 33%.
Во втором опыте игрок выбирает дверь а после открытия двери ведущим меняет свой выбор. Вероятность выиграть для этого опыта - 66%.
Это тоже самое, что говорить, что вероятность выпадения двойки в опытах с шестигранной и пятигранной игральной костью равна одному.
Какова по вашему будет сумма вероятностей для этого опыта с четырьмя дверьми? Если игрок выбирает одну дверь изначально и ведущий открывает тоже одну дверь.

Спустя 1 минута, 15 секунд (12.10.2010 - 14:37) netruxa написал(а):
offtop
ТопикСтартер, ты условия неправильно пишешь
надо не
if ($dver_igrok == "1")
, а
if ($dver_igrok == 1)

это так, на будущее )

Спустя 3 минуты, 11 секунд (12.10.2010 - 14:40) Raskolnikoff написал(а):
Цитата (vasa_c @ 12.10.2010 - 14:31)
Raskolnikoff, вот мы выбрали одну из трёх дверей.
Какая вероятность того что за ней есть то что нам нужно? 1/3

После чего ведущий что-то там открыл, что-то предложил, сплясал голый на столе, позвал цыган с медведями, провёл ещё десяток экспериментов.
Как это повлияло на вероятность нахождения автомобиля за дверью?
Никак, если только цыгане его не умыкнули.
Если же он стоит, как и стоял, вероятность всё та же.

Вот тут то и весь подвох. Если вы выбрали дверь, то вероятность того, что за ней авто 1/3. И того, что за соседней дверью авто, тоже 1/3. И за еще одной - тоже 1/3. Но по сле того, как ведущий открыл дверь, за которой, он уверен, авто нету, и не ту, что вы выбрали, то для двери, которую вы выбрали, вероятность остается равной 1/3, а для второй не открытой двери она изменяется и становится равной 2/3. В этом и суть этого парадокса.

Спустя 3 минуты, 19 секунд (12.10.2010 - 14:43) vasa_c написал(а):
Raskolnikoff, я примерно понимаю что такое опыт в теории вероятностей, а также границы применения этой теории. О чем сказал выше: когда ведущий открывает дверь основываясь на своих знаниях, теория вероятности уже не действует.

Цитата
Какова по вашему будет сумма вероятностей для этого опыта с четырьмя дверьми?

Одну выбрал - 25% на неё. 75% распределились по остальным трём.
Ведущий вывел одну из дверей за рамки, 75% перераспределились по оставшимся двум (из вторых трёх) - 37,5%.
Итого: 25% (остаться с прежней) + 37,5% (выбрать другую) + 37,5% (ещё другую) = 100%

Спустя 23 минуты, 44 секунды (12.10.2010 - 15:07) Raskolnikoff написал(а):
vasa_c
Да, все верно. Итого мы получим, что если дверь не менять, то вероятность выиграть является 25%, а если менять - то 37.5%. Это - 2 разные стратегии поведения. И сумма этих двух вероятностей не равна одному.
Цитата (vasa_c @ 12.10.2010 - 14:43)
Итого: 25% (остаться с прежней) + 37,5% (выбрать другую) + 37,5% (ещё другую) = 100%

В этом примере, как и в предыдущем, есть 2 стратегии поведения, и 2 разных опыта с разными условиями - с заменой двери и без. Именно это я и пытался сказать изначально. То, что сумма вероятностей выигрыши каждой двери равна 100 - факт. Я просто изначально неправильно понял Ваши слова. А потом мы просто спорили о разных вещах)

Спустя 1 час, 2 минуты, 52 секунды (12.10.2010 - 16:10) LRCenter написал(а):
Да блин, ребята, ну вы тут и надумали.
Отошел в магазин на полчаса smile.gif
--

Начиная эту тему я четко понимал суть парадокса. Щас, благодаря вам, уже ничего не понимаю blink.gif

Спустя 42 минуты, 48 секунд (12.10.2010 - 16:53) LRCenter написал(а):
Смотрите:

Если мы выбираем из трех вариантов, шанс угадать будет 1/3.
Когда вмешивается ведущий, он обладает ЗНАНИЕМ где находится приз, и использует его для того чтоб открыть пустую дверь. Таким образом вмешиваясь в процесс он изманяет пространство вариантов, оставляя в нем только 2 варианта, при чем шанс выиграть оставив свой выбор прежним по прежнему будет 1/3.

Если же вы перемените выбор шанс выиграть повысится до 1/2.

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


Вот и модель показывает что шансы повышаются. Только вот понять не могу почему 66%, ведь это 2/3, а должно быть 1/2? Объясните популярно.

Спустя 2 часа, 32 минуты, 35 секунд (12.10.2010 - 19:25) vasa_c написал(а):
LRCenter

1. Так как он обладает знанием то уже никакие "должно быть" вытекающие из теорвера больше не действуют.

2. На две двери, которые мы не выбрали остаётся 67%. После того, как ведущий открывает одну, на оставшуюся переходят все эти 67

3. Мы на самом деле открываем 2 двери, хотя и одну руками ведущего. Итого наши шансы - 2/3, ими только нужно правильно воспользоваться (изменить дверь).

Спустя 2 минуты, 17 секунд (12.10.2010 - 19:27) LRCenter написал(а):
Ну, так бы сразу. А то у меня чуть мозг не взорвался smile.gif


_____________
Меньше кода - меньше багов ©
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.