Парадокс Монти Холла РАБОТАЕТ!
Парадокс Монти Холла Описан в Википедии. На самом деле работает!!
Надо рассуждать так: Вначале есть три двери. Они делятся на две группы. Вероятность угадывания первой группы (из одной двери, выбор игрока) — 1/3. т. е. фактически, игрок ошибается в 2 случаях из 3 в своём выборе. Ведущий, открывая дверь — работает с группой из двух оставшихся дверей, сумма выигрыша которых — 2/3. И открывает всегда проигрышную дверь. И теперь, вся вероятность выигрыша группы (2/3) сосредотачивается на оставшейся двери. Но игрок выбирал проигрышную дверь в первой группе, в условиях равных вероятностей всех дверей, но не равной вероятности обеих групп! И доля выбранной двери -- как была 1/3, так и осталась. Стало быть вероятность выигрыша, если игрок поменяет дверь на оставшуюся во второй группе — составит 2/3, а если не поменяет свой выбор — то выигрыш двери игрока так и останется 1/3.
И вот моя программа -- это прекрасно подтверждает. Вероятность выигрыша без смены двери всегда -- 33%. А при смене двери -- всегда 66%. Текст программы (python3):
# -*- coding: utf8 -*-
'''
Здесь пытаемся имитировать игру Бенни-Хилла.
три двери, за одной автомобиль.
'''
import random as ранд
from time import time
ранд.seed(time())
попал=0
for i in range(0,1000000):
маш=ранд.choice([1,2,3])
выб=ранд.choice([1,2,3])
if маш==выб:
попал+=1
print(попал," из ", i+1, " вероятность= ", попал/(i+1))
попал=0
for i in range(0,1000000):
маш=ранд.choice([1,2,3])
выб=ранд.choice([1,2,3])
if выб==1:
ведущ=ранд.choice([2,3])
'''
Здесь и далее -- надо понимать, что дверь открытая ведущим --
всегда зависит от вашего выбора, и от того -- где стоит
машина. Ведущий не может выбрать вашу дверь, и не может
выбрать дверь с машиной, но он всегда выбирает неправильную
дверь из двух оставшихся! Тем самым исключая один заведомо
неправильный вариант, и увеличивая долю выигрыша оставшейся
двери в группе, за счёт открытой.
'''
if маш==2:
ведущ=3
elif маш==3:
ведущ=2
elif выб==2:
ведущ=ранд.choice([1,3])
if маш==1:
ведущ=3
elif маш==3:
ведущ=1
elif выб==3:
ведущ=ранд.choice([1,2])
if маш==1:
ведущ=2
elif маш==2:
ведущ=1
if ведущ==1:
if выб==2:
выб=3
elif выб==3:
выб=2
elif ведущ==2:
if выб==1:
выб=3
elif выб==3:
выб=1
elif ведущ==3:
if выб==1:
выб=2
elif выб==2:
выб=1
if маш==выб:
попал+=1
print(попал," из ", i+1, " вероятность= ", попал/(i+1))
Надо рассуждать так: Вначале есть три двери. Они делятся на две группы. Вероятность угадывания первой группы (из одной двери, выбор игрока) — 1/3. т. е. фактически, игрок ошибается в 2 случаях из 3 в своём выборе. Ведущий, открывая дверь — работает с группой из двух оставшихся дверей, сумма выигрыша которых — 2/3. И открывает всегда проигрышную дверь. И теперь, вся вероятность выигрыша группы (2/3) сосредотачивается на оставшейся двери. Но игрок выбирал проигрышную дверь в первой группе, в условиях равных вероятностей всех дверей, но не равной вероятности обеих групп! И доля выбранной двери -- как была 1/3, так и осталась. Стало быть вероятность выигрыша, если игрок поменяет дверь на оставшуюся во второй группе — составит 2/3, а если не поменяет свой выбор — то выигрыш двери игрока так и останется 1/3.
И вот моя программа -- это прекрасно подтверждает. Вероятность выигрыша без смены двери всегда -- 33%. А при смене двери -- всегда 66%. Текст программы (python3):
# -*- coding: utf8 -*-
'''
Здесь пытаемся имитировать игру Бенни-Хилла.
три двери, за одной автомобиль.
'''
import random as ранд
from time import time
ранд.seed(time())
попал=0
for i in range(0,1000000):
маш=ранд.choice([1,2,3])
выб=ранд.choice([1,2,3])
if маш==выб:
попал+=1
print(попал," из ", i+1, " вероятность= ", попал/(i+1))
попал=0
for i in range(0,1000000):
маш=ранд.choice([1,2,3])
выб=ранд.choice([1,2,3])
if выб==1:
ведущ=ранд.choice([2,3])
'''
Здесь и далее -- надо понимать, что дверь открытая ведущим --
всегда зависит от вашего выбора, и от того -- где стоит
машина. Ведущий не может выбрать вашу дверь, и не может
выбрать дверь с машиной, но он всегда выбирает неправильную
дверь из двух оставшихся! Тем самым исключая один заведомо
неправильный вариант, и увеличивая долю выигрыша оставшейся
двери в группе, за счёт открытой.
'''
if маш==2:
ведущ=3
elif маш==3:
ведущ=2
elif выб==2:
ведущ=ранд.choice([1,3])
if маш==1:
ведущ=3
elif маш==3:
ведущ=1
elif выб==3:
ведущ=ранд.choice([1,2])
if маш==1:
ведущ=2
elif маш==2:
ведущ=1
if ведущ==1:
if выб==2:
выб=3
elif выб==3:
выб=2
elif ведущ==2:
if выб==1:
выб=3
elif выб==3:
выб=1
elif ведущ==3:
if выб==1:
выб=2
elif выб==2:
выб=1
if маш==выб:
попал+=1
print(попал," из ", i+1, " вероятность= ", попал/(i+1))
Кому надо -- берите скрипт. Лицензия -- BSD-Clause-2
ОтветитьУдалитьЭтот комментарий был удален администратором блога.
ОтветитьУдалитьЭтот комментарий был удален администратором блога.
ОтветитьУдалить