以下描述来自百度百科: 3 [9 `! i. A' C
三门问题(Monty Hall problem)亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目Let's Make a Deal。问题名字来自该节目的主持人蒙提·霍尔(Monty Hall)。参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机会率?如果严格按照上述的条件,即主持人清楚地知道,哪扇门后是羊,那么答案是会。换门的话,赢得汽车的机率是2/3。 + L' W y7 `; z, B! j1 c# J # F, [' A; [ q/ ?8 A, p2 N! r鄙人谈几句话: - C; y# b) s. e很多人都认为改变选择之后是二选一的情况,认为赢得汽车的概率是1/2,包括伟大的数学家鄂尔多斯都这样认为。但是我们要用事实来证明,如果真实做这个实验,会消耗太多资源,下面由鄙人用计算机编程来模拟这个情形。源码公开,如果有大神觉得不妥,欢迎指正。! c. |/ L$ [8 Q, x% N) \- p
; f: |4 C- Z( a; ~/ O以下是鄙人的python模拟程序: 6 d+ U. Z# q4 W& |9 T0 W6 ^7 h9 } #Author : Naupio . S- p: h x9 T. a$ ?6 b7 @: ~import random as rd 2 E+ e4 W7 O8 x% ?change = True" u9 z+ R0 R. r, }6 L
def moni(times=10000):/ ^3 O* }( x& ?0 j% l
counts = 0.00 L/ L3 n. b, D {% \9 i% y4 x
for i in range(times): X- T: {' Z# W$ Q1 p% V
rightaim = int(rd.random()*3) #汽车所在的门 6 R3 f. q1 M9 \$ a( X$ t$ N- a( f guss = int(rd.random()*3) #第一次猜的门 ( U7 _$ V2 p+ L- E; P aim=[0,1,2] #初始化三个门 # }$ w5 h* \. _& p" T/ r 9 O' s0 T2 t& v8 O- e4 Y #找出要主持人打开的门 ! C- p& D$ `% F2 @
for j in aim:5 N4 R. V1 r0 s8 @" p8 T6 r7 k
if (j!=guss and j!=rightaim):/ i: e, x4 h4 P. V% B0 j' e
openaim = j% w" h- p2 _; A+ p4 \
break7 F; w. ]0 w( Z5 z$ e# h6 n
8 p/ {6 m: f* r: s #找出另一个门 0 D( a2 h3 W* H
for j in aim:3 y1 V C8 R6 E4 h# w3 A/ b
if (j!=guss and j!=openaim):* a0 E+ l% \6 Y) ~8 M
otheraim =j ( P# U8 A$ k' I* H0 O, ` break6 o1 X Z: F1 s# N
& v3 q2 T$ i/ u+ F, `
! P& Y3 @0 m- K6 B+ ? #改变选择 & e. H8 G2 I* c* V4 z8 O( f! C if change: 4 Y. y- I8 N; {. G+ `( `$ V! a guss = otheraim 1 _+ a* x7 _* u% P) K/ B1 d& |6 w0 T4 s / G1 S) T0 O7 A3 \% p7 H. o. w
#改变选择之后猜中汽车的次数统计 8 H0 Q$ F' i$ F/ b if guss==rightaim:* O9 M) E/ Q' C U- T
counts+=1 6 A& l8 l) w+ c1 \" v2 J1 ? , @$ n) t" I* M
#返回改变选择之后猜中汽车的概率 8 \ d# I0 s+ c! {- n2 G s return counts/times - F7 O2 ?; }7 P1 u. H5 Fprint "改变选择之后的模拟一千次结果是:",moni(1000) % R- p3 {0 J/ N- Q: x: Sprint "改变选择之后的模拟一万次结果是:",moni(10000) 1 p5 c7 G, v& H$ T) xprint "改变选择之后的模拟十万次结果是:",moni(100000) 0 o- n) l. _% ]( W! ]6 rprint "改变选择之后的模拟一百万次结果是:",moni(1000000)4 K3 N' v# d: J9 {8 r2 S
print "改变选择之后的模拟一千万次结果是:",moni(10000000) 2 G3 z9 }/ N/ @: O+ O3 g3 h/ E & ~* } x( W6 @! V以下是模拟效果截图: , j8 y: M1 S2 F7 V: g( Y 4 C. S1 `* O/ G8 i! r% t" M+ ]& y6 S- e+ g$ D7 P0 v
鄙人最后说几句: * @) i. g, n& F$ C" n1 h1 r5 J 从模拟的结果上来看还算是成功的,随着模拟的次数越来越多,结果越来越接近2/3,本来想打算再提高模拟次数的,但由于我的本本比较渣,会卡爆,所以只模拟到一千万次。 3 J, Y8 Z( R: _5 X$ J9 X3 f@百年孤独@数学中国—罂粟@madio m; w1 l6 l( g9 g4 qps:不排除有错误,欢迎指正,欢迎交流,转载请注明出处,版权所有。 ; `: V; O5 `3 H7 W5 F( g 6 w: U# w' y; ~9 P& x7 K3 a' ^$ E. k2 f0 M) c
3 @7 n% J* J k) X: f