- 在线时间
- 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年网络挑战赛交流 |
直觉的欺骗,三门悖论的模拟 以下描述来自百度百科:
# z6 K5 o: D) |三门问题(Monty Hall problem)亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目Let's Make a Deal。问题名字来自该节目的主持人蒙提·霍尔(Monty Hall)。参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机会率?如果严格按照上述的条件,即主持人清楚地知道,哪扇门后是羊,那么答案是会。换门的话,赢得汽车的机率是2/3。
2 u- p# p, t g# L+ u7 m3 `$ C. b
鄙人谈几句话:
! U2 S9 m6 N S4 C很多人都认为改变选择之后是二选一的情况,认为赢得汽车的概率是1/2,包括伟大的数学家鄂尔多斯都这样认为。但是我们要用事实来证明,如果真实做这个实验,会消耗太多资源,下面由鄙人用计算机编程来模拟这个情形。源码公开,如果有大神觉得不妥,欢迎指正。
* h; v( {+ o# c9 T' x2 H% D1 s: m( J9 E, \) ?% E& Z
以下是鄙人的python模拟程序:
" o% {4 x% s! M' s4 C# d+ ?) Z+ b$ z #Author : Naupio
9 _. `8 _) g8 u7 O4 x P% Nimport random as rd3 q8 ~# f0 @: Z, v
change = True( X- s2 F _% I: X9 J Q+ ^
def moni(times=10000):
, d% f! _; a2 f6 h: A counts = 0.0
1 f! J1 y* t5 [; E8 k: X for i in range(times):
9 R7 {4 x3 _9 D. }4 _. ^, P g rightaim = int(rd.random()*3) #汽车所在的门
, Z/ |# N! z; w3 q6 O n8 E guss = int(rd.random()*3) #第一次猜的门
* l1 Z; ~0 B, K4 I& b/ u aim=[0,1,2] #初始化三个门
/ O8 s1 o6 }7 r% w3 F. U7 H 3 y) ^3 K0 O7 H7 `
#找出要主持人打开的门
$ t% S5 x9 D4 o for j in aim:1 f, S X. l( J7 Q0 T" {
if (j!=guss and j!=rightaim):
( N7 V8 N4 I- k/ C+ i openaim = j
$ ^+ `0 C) ~- t5 p+ x! V5 w break0 t0 S7 g( W7 [
0 Q( ^$ e; C: U #找出另一个门
% S8 U+ C4 S9 i0 _ for j in aim:0 ]- d7 P; w& J
if (j!=guss and j!=openaim):4 g; g! ?1 S U1 R( y' I4 C5 o
otheraim =j$ t/ }( Q5 ]- ^0 `' d( m9 q
break$ v5 t* c) c" d6 y; |' \
: y% @: o4 J' r; R
7 z9 B* Z$ B0 x0 ^) |' A #改变选择
7 x# e2 i- z& W if change:+ Y% N$ S) ?, w# t9 V$ |
guss = otheraim
8 h# i2 y2 Q0 D
! h6 h b% k0 i" r) z% l6 w9 h3 L #改变选择之后猜中汽车的次数统计 2 P' M8 e: _* ?3 k
if guss==rightaim: ?0 r% G) Y# h6 _' k' X
counts+=1
( [5 B7 S# Q3 @' O1 T, a ) ~/ t" r! O1 ]' ?) q
#返回改变选择之后猜中汽车的概率 / {) a2 c) k% A! `" \
return counts/times
# N( B" ~. _% R6 |5 i$ nprint "改变选择之后的模拟一千次结果是:",moni(1000)
' }+ s H6 @. P" F- m. bprint "改变选择之后的模拟一万次结果是:",moni(10000)
" |( }* d! t+ z8 y. Aprint "改变选择之后的模拟十万次结果是:",moni(100000); g% w! p% F+ n
print "改变选择之后的模拟一百万次结果是:",moni(1000000)
7 |0 m5 d: s1 T0 m) o' E. vprint "改变选择之后的模拟一千万次结果是:",moni(10000000)
4 t: x7 B& K: _9 Y
' d. y$ Y7 a( K& Y* M6 O, @以下是模拟效果截图:
5 O7 f+ A' k% o* l- m U) \ $ v' D7 n+ M# e
& y; n/ K" w. Q3 Q& G鄙人最后说几句:$ I/ z0 G3 ?5 N) z+ D
从模拟的结果上来看还算是成功的,随着模拟的次数越来越多,结果越来越接近2/3,本来想打算再提高模拟次数的,但由于我的本本比较渣,会卡爆,所以只模拟到一千万次。
! j/ j- K# B2 A+ ?@百年孤独 @数学中国—罂粟 @madio d4 E+ x$ E C$ R; v! |3 N' U
ps:不排除有错误,欢迎指正,欢迎交流,转载请注明出处,版权所有。
+ n, O3 o/ d( u0 M6 B# s' `7 E# x$ W, W2 k, z, M1 B( Y
+ o# r" @3 \, ^6 K$ q4 }( i( I# `: ]$ C+ k& [( F- D
|
zan
|