- 在线时间
- 119 小时
- 最后登录
- 2015-11-18
- 注册时间
- 2013-1-11
- 听众数
- 9
- 收听数
- 1
- 能力
- 0 分
- 体力
- 1210 点
- 威望
- 0 点
- 阅读权限
- 40
- 积分
- 496
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 270
- 主题
- 7
- 精华
- 0
- 分享
- 0
- 好友
- 2
升级   65.33% TA的每日心情 | 衰 2015-11-11 09:17 |
|---|
签到天数: 234 天 [LV.7]常住居民III
 群组: 2013年电工杯B题讨论群 群组: 2014年网络挑战赛交流 |
|
直觉的欺骗,三门悖论的模拟 以下描述来自百度百科: 2 {7 r: p+ K" J- w9 I: Y# l+ P
三门问题(Monty Hall problem)亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目Let's Make a Deal。问题名字来自该节目的主持人蒙提·霍尔(Monty Hall)。参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机会率?如果严格按照上述的条件,即主持人清楚地知道,哪扇门后是羊,那么答案是会。换门的话,赢得汽车的机率是2/3。4 }$ Z- A$ X$ ]4 x2 M
' k. Q) h. K$ t# O: d鄙人谈几句话:( k4 o( Q3 V1 b$ H% r# X
很多人都认为改变选择之后是二选一的情况,认为赢得汽车的概率是1/2,包括伟大的数学家鄂尔多斯都这样认为。但是我们要用事实来证明,如果真实做这个实验,会消耗太多资源,下面由鄙人用计算机编程来模拟这个情形。源码公开,如果有大神觉得不妥,欢迎指正。& O, D8 e ^, b1 {) a+ S
3 [) R/ D. ^& F. l
以下是鄙人的python模拟程序:
) h, S9 X2 o/ p% \& t- Z9 E8 B) k #Author : Naupio
* N& Z9 L$ Q9 U2 himport random as rd. _+ P$ E) l! g3 q" e# O
change = True3 i! h, ]1 B9 {) U
def moni(times=10000):
2 i1 k4 _9 m/ |8 }. V1 ]( A/ D counts = 0.09 x, f" E9 T. A% D9 q
for i in range(times):
# d0 |! p6 h8 O% M0 `5 n+ u: z rightaim = int(rd.random()*3) #汽车所在的门# W' V( I# h$ o, s3 s
guss = int(rd.random()*3) #第一次猜的门
" s3 ~3 O4 ~3 |5 n9 G! @/ N* S aim=[0,1,2] #初始化三个门
( Y- R+ c* u1 X0 Z) [- W! I 0 K( ?5 C ~/ s& H
#找出要主持人打开的门 $ N/ `8 Z- P$ L* m* \- u+ Y
for j in aim:
& z r% ]6 J# O+ t if (j!=guss and j!=rightaim):2 V/ y, V4 I2 b% `" |" P6 u3 a1 G
openaim = j
! q* ^1 f8 c6 H* E2 ^ break
$ d; D9 D2 `# ~& {, i 3 S7 P2 {( h; h' |' o2 {
#找出另一个门 ( v- C/ {; ^1 q! o3 f x, g
for j in aim:
6 y. h/ b+ ~/ { if (j!=guss and j!=openaim):
) C- u$ V! d I& X7 R0 N% i7 L otheraim =j
# R+ m! ~; d/ a/ U A2 R7 ] break
B% W }' w7 \% u
% n- ^$ D) e% `$ {9 @( Q, j8 Q# x$ h5 |
#改变选择
0 w. _- K% |3 P% h; R. }' i if change: C. K, J+ d+ y4 U. T
guss = otheraim
+ j1 X) O! `) F# [6 ~2 }1 T
& X! X* f9 ^8 ^4 T/ U" U #改变选择之后猜中汽车的次数统计 # Q+ p$ h- u5 ~! J! s) v: j8 k* A
if guss==rightaim:2 Q' H. b+ y6 x$ c! h3 a4 u6 I
counts+=1# y1 E, X4 r) k6 J6 y, A2 d7 d
5 S% m/ n- _- e" S, z* @
#返回改变选择之后猜中汽车的概率
( q r# D7 c5 D& q; e- B return counts/times
2 A/ [# F0 t% { e) `print "改变选择之后的模拟一千次结果是:",moni(1000)7 A `) m& y" H3 q' U1 O0 Z) F4 l
print "改变选择之后的模拟一万次结果是:",moni(10000)$ I/ H5 s8 _# C3 r4 k
print "改变选择之后的模拟十万次结果是:",moni(100000)4 O& ~% Y. w4 S B! D% O D$ j
print "改变选择之后的模拟一百万次结果是:",moni(1000000)& o. u( f2 `3 D7 ~; A
print "改变选择之后的模拟一千万次结果是:",moni(10000000) , P) t6 _% z3 ~( @: @& t; i
3 d. H7 ]+ c. t5 l( |以下是模拟效果截图:
0 b+ c4 R0 Q& z5 l/ g/ F& [1 Q
8 ~: z; g- B" w( {. U( {7 E) u: L2 W+ j, @$ ]
鄙人最后说几句:$ U& T7 V( y( K/ y! _
从模拟的结果上来看还算是成功的,随着模拟的次数越来越多,结果越来越接近2/3,本来想打算再提高模拟次数的,但由于我的本本比较渣,会卡爆,所以只模拟到一千万次。
" }4 c4 T3 {! U6 n) i+ U@百年孤独 @数学中国—罂粟 @madio . U+ k! d, O6 k7 Q7 ]
ps:不排除有错误,欢迎指正,欢迎交流,转载请注明出处,版权所有。
: o% I% S' v# W1 \9 O& D! H; N, s5 b# i* e% z' Q0 \
9 c: v: h9 F/ M6 C5 u
, Y; E% `2 ]+ a; N |
zan
|