2008-10-26

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

Пример того, как программистский подход к решению проблемы может сделать даже парадокс тривиально понятным.
(defun monty-hall (n)
"Возвращает отношение доли успешных и неуспешных розыгрышей
игры Монти Холла при выборе стратегии всегда менять изначально
выбранную дверь"
(let ((succ 0.0)
(fail 0.0))
(dotimes (i n)
(let ((choice (random 3))
(prize (random 3)))
(if (= choice prize)
(incf fail) ; мы выбрали правильную дверь, но придется поменять
(incf succ)))) ; мы выбрали неправильную дверь, значит, после смены -- правильную
(/ succ fail)))

И статистика:
CL-USER> (monty-hall 100)
1.5641025
CL-USER> (monty-hall 1000)
1.6455027
CL-USER> (monty-hall 10000)
1.9958059
CL-USER> (monty-hall 100000)
2.0147724
CL-USER> (monty-hall 1000000)
1.9966408
CL-USER> (monty-hall 10000000)
1.9986455

No comments: