QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 6342|回复: 0
打印 上一主题 下一主题

用python模拟三门悖论

[复制链接]
字体大小: 正常 放大

7

主题

9

听众

496

积分

升级  65.33%

  • TA的每日心情

    2015-11-11 09:17
  • 签到天数: 234 天

    [LV.7]常住居民III

    社区QQ达人

    群组2013年电工杯B题讨论群

    群组2014年网络挑战赛交流

    跳转到指定楼层
    1#
    发表于 2014-9-18 17:07 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    直觉的欺骗,三门悖论的模拟
    以下描述来自百度百科: 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 K
    3 a' ^$ E. k2 f0 M) c
    3 @7 n% J* J  k) X: f
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-4-15 14:14 , Processed in 0.376108 second(s), 49 queries .

    回顶部