以下描述来自百度百科: : B! M k9 m" ]0 P
三门问题(Monty Hall problem)亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目Let's Make a Deal。问题名字来自该节目的主持人蒙提·霍尔(Monty Hall)。参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机会率?如果严格按照上述的条件,即主持人清楚地知道,哪扇门后是羊,那么答案是会。换门的话,赢得汽车的机率是2/3。 # i" Z- D' ~: ]4 r / |7 \0 K, D! _$ `( _. r) K: e鄙人谈几句话:/ G0 [8 v6 d) ~& W
很多人都认为改变选择之后是二选一的情况,认为赢得汽车的概率是1/2,包括伟大的数学家鄂尔多斯都这样认为。但是我们要用事实来证明,如果真实做这个实验,会消耗太多资源,下面由鄙人用计算机编程来模拟这个情形。源码公开,如果有大神觉得不妥,欢迎指正。) y c9 m! L/ L1 e; ^. C) M
+ T6 m1 T, E# w y# v: m以下是鄙人的python模拟程序: ! [: @7 @! Z h# F/ p" R i #Author : Naupio x5 H* |" x$ G6 A1 F/ Q
import random as rd 7 }/ a w q7 o2 P& Gchange = True + t: t; P$ d* C8 q9 g. E* ydef moni(times=10000):( v" F% c! Y" [: t7 i
counts = 0.0/ b8 t. S2 J8 L; x
for i in range(times):: a( |3 W8 t# T2 U) G# }
rightaim = int(rd.random()*3) #汽车所在的门 " n4 F# W& |" s guss = int(rd.random()*3) #第一次猜的门 3 B8 M6 [4 s9 \, a aim=[0,1,2] #初始化三个门6 e N2 I- [0 f) S/ i6 T7 O% x
$ P1 Y% n5 \0 c; C
#找出要主持人打开的门 & V+ H' ^. ^7 o b+ k9 o; I) a9 `+ g: E
for j in aim: ) r1 b8 |4 E& ^3 g9 x0 w# K% H+ y' y if (j!=guss and j!=rightaim):7 Q; f6 q9 k$ e7 L. x: h
openaim = j 8 G+ h" D4 i( J break/ S' S* o* G$ Y/ Y/ M
1 W# H8 E! R) e4 s# N" M* e #找出另一个门 : l7 S8 V* P7 R8 \6 l
for j in aim:/ k2 N* r5 s" ^. N* h1 M
if (j!=guss and j!=openaim): ; Q' w8 S2 U; z8 D/ e6 p) B6 w6 p. M otheraim =j8 H. r9 s9 k$ t) Z$ p6 N8 Q
break. R0 V5 g( B; b$ O
. C2 L& U5 L# r& @3 v& n* m! w$ R
: `3 M4 \# s. B" l, D
#改变选择 ! a8 }# D! ]! @5 ?
if change:0 P# I' c L, ~* q1 A7 i; h8 C
guss = otheraim - I& e& \& F1 x( j9 B# } , E! g0 k7 w1 T5 v* }+ ~
#改变选择之后猜中汽车的次数统计 5 J- b9 ?* J# I8 m$ S9 [+ R if guss==rightaim: 2 f$ ~8 K9 s( t' L counts+=17 h/ q2 m) k$ k; u5 D; ~( i, ]