- 在线时间
- 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年网络挑战赛交流 |
|
直觉的欺骗,三门悖论的模拟 以下描述来自百度百科: ' w! N2 H5 ^- N/ I, U- |
三门问题(Monty Hall problem)亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目Let's Make a Deal。问题名字来自该节目的主持人蒙提·霍尔(Monty Hall)。参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机会率?如果严格按照上述的条件,即主持人清楚地知道,哪扇门后是羊,那么答案是会。换门的话,赢得汽车的机率是2/3。
8 g9 I( J- J: U9 [) n% {9 v6 i+ k5 f$ d' ~# _
鄙人谈几句话:7 u0 w4 M# D( z# j4 t
很多人都认为改变选择之后是二选一的情况,认为赢得汽车的概率是1/2,包括伟大的数学家鄂尔多斯都这样认为。但是我们要用事实来证明,如果真实做这个实验,会消耗太多资源,下面由鄙人用计算机编程来模拟这个情形。源码公开,如果有大神觉得不妥,欢迎指正。
c' \! a4 z* v* E/ G% e
7 P; T" C$ @6 ^4 H! E U! r7 X/ h) z以下是鄙人的python模拟程序:
: ]% b& N4 q% N: Y4 N #Author : Naupio! |9 @ Z+ B ]! b% r8 t6 |. k( }
import random as rd) R+ m1 G; d% N& N8 n
change = True
/ h+ _: t( Z" U \' r2 Q6 Rdef moni(times=10000):$ ^9 ?1 o& e* w" A5 e' R
counts = 0.0! a. t( `: Q9 h Q8 j' v e! J j' n% f
for i in range(times):
" s/ h, J; R* b" a: { rightaim = int(rd.random()*3) #汽车所在的门
4 g4 ~! l! Z. c3 a. l$ b guss = int(rd.random()*3) #第一次猜的门+ i# V8 i* z0 N0 d/ Y5 G
aim=[0,1,2] #初始化三个门
" v: Y- z; H ?" Z' C2 y7 P $ Q% T# Z( @* w0 i. ^5 l
#找出要主持人打开的门
* p" @1 w) J k( t% a8 c$ t, R for j in aim:! }$ F& I3 C9 P5 T
if (j!=guss and j!=rightaim):. m% l) D( {( P `5 N
openaim = j
3 G! A% O) w6 w- B break0 T2 C f7 V* ^ }4 o
' z# ?4 {7 @. J( Y8 m W$ {. X! c! [% {
#找出另一个门
3 \7 @; }" U+ j1 S/ s4 w" f! R+ s for j in aim:
! }3 K. F" l9 P$ ]2 e1 j, L/ l8 V if (j!=guss and j!=openaim):
- _; _' p1 o+ f3 S1 \ otheraim =j
3 o* ~0 i$ B" k4 s+ h1 J3 F4 X6 y" J& H break
8 N5 D. G0 C9 S" _% w/ [% `2 q
& H3 Y% V3 L& o7 p
5 y- b7 d0 @6 S8 Z) Q #改变选择
# l! ~. a- q4 ?' g1 O8 a1 t if change:
3 P* ^- Y8 i- d guss = otheraim0 J- r8 ]/ O1 X( T. M& r0 U8 J) f
' _4 I& y1 \1 J c* `. _/ z #改变选择之后猜中汽车的次数统计 / h6 o6 p" Y9 v% D
if guss==rightaim:
% h. V3 L) q0 x6 _( o counts+=1" c8 x" v5 i* ?) K( B
, K1 h+ g7 K: d6 \' M7 ~8 R; Z #返回改变选择之后猜中汽车的概率 8 w( S& n. ]/ G$ c0 ~+ U4 ^& f1 D
return counts/times
/ H# a4 t+ ` w4 w2 eprint "改变选择之后的模拟一千次结果是:",moni(1000)+ d0 A8 Q( A R6 G$ r
print "改变选择之后的模拟一万次结果是:",moni(10000)
7 f; M7 Z9 |" M5 bprint "改变选择之后的模拟十万次结果是:",moni(100000)6 @ t9 F6 e: |
print "改变选择之后的模拟一百万次结果是:",moni(1000000)1 ?& c" x. c( S0 u8 j: l0 K$ k# f$ {
print "改变选择之后的模拟一千万次结果是:",moni(10000000) ' ?2 Y w' Z- m) T/ F$ D1 ^1 W
0 M! e9 {1 f: _7 [, z. \& e" n
以下是模拟效果截图: % S4 L! {; U3 W' h- R3 z% N
2 {) n& J0 B5 p4 t$ u
6 O2 e4 y0 A: b N0 }$ T2 H# I
鄙人最后说几句:
6 W/ @" U( b- w' E' u) C 从模拟的结果上来看还算是成功的,随着模拟的次数越来越多,结果越来越接近2/3,本来想打算再提高模拟次数的,但由于我的本本比较渣,会卡爆,所以只模拟到一千万次。* r+ D6 x7 W( o$ [4 l) o7 o- C
@百年孤独 @数学中国—罂粟 @madio ; b5 {( g4 N: F) X+ W0 N4 \# e
ps:不排除有错误,欢迎指正,欢迎交流,转载请注明出处,版权所有。) M% v. W! g1 k. T- N. M
4 U7 @9 `1 m. K e2 O/ C
* ~4 W0 v, h7 w2 g& R* X4 b5 L- y0 F6 W% I8 k- Z* w$ O: d& b
|
zan
|