QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 6372|回复: 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
    直觉的欺骗,三门悖论的模拟
    以下描述来自百度百科:
    ' P  Z. F3 t, t- n三门问题(Monty Hall problem)亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目Let's Make a Deal。问题名字来自该节目的主持人蒙提·霍尔(Monty Hall)。参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机会率?如果严格按照上述的条件,即主持人清楚地知道,哪扇门后是羊,那么答案是会。换门的话,赢得汽车的机率是2/3。
    1 \2 v8 ~6 M' j4 o& e3 A6 {& ?
    1 s4 J8 C% ]) v0 v: m0 d; d鄙人谈几句话:7 b7 {6 h! ?+ M9 M3 S8 J
    很多人都认为改变选择之后是二选一的情况,认为赢得汽车的概率是1/2,包括伟大的数学家鄂尔多斯都这样认为。但是我们要用事实来证明,如果真实做这个实验,会消耗太多资源,下面由鄙人用计算机编程来模拟这个情形。源码公开,如果有大神觉得不妥,欢迎指正。0 q4 h2 {9 u' j5 C; a2 ^
    9 ~9 h6 j/ W3 A
    以下是鄙人的python模拟程序: ) L4 u6 Y! k. ]; i, V4 p% \
           #Author : Naupio, J( F. \- [8 d; U* L; E
    import random as rd
    5 T( @4 b# h/ |3 C  a5 }" bchange = True
    7 _. @1 X% p$ i0 t: [/ gdef moni(times=10000):/ s/ r% P) `% B0 \$ E3 d7 T3 {# B
        counts = 0.0
    5 }$ k0 \0 A4 ~0 u& n5 [- r    for i  in range(times):
    6 L7 _9 [6 F( a; D+ M        rightaim = int(rd.random()*3)  #汽车所在的门8 T6 L1 ]' ^& h. m
            guss = int(rd.random()*3)      #第一次猜的门
    2 c: U: g9 l" l& B) x        aim=[0,1,2]                    #初始化三个门
      }( Y* k( J" K# n. ~4 Y" J9 _4 w               & Y. \+ g! Q  D
            #找出要主持人打开的门
    , b$ t  q0 u3 J# g; B7 q6 h3 w        for j in aim:
    7 A; l" }* \6 ]$ a. \8 a5 B' ]            if (j!=guss and j!=rightaim):
    ) K' r. b  g5 y1 e                openaim = j
    ) \1 q1 ^  l" U( B0 Y                break  t, `1 T" u! P9 R
      
    8 {' L- B! n$ J# D        #找出另一个门
    9 ^0 N! a7 t' W) K, Q6 V2 S- n        for j in aim:8 _7 v- {1 k; e1 \- g
                if (j!=guss and j!=openaim):& s1 ?' G+ ^" s) T; d
                    otheraim =j
    ) p5 A) ^( {1 `                break6 g. }  q, o0 I# c. U. p& V" D
    & F' R4 g$ i' \' ?: I' a
    6 `! S1 X7 A' H
            #改变选择 " G* Q% P+ r' L. H
            if change:
    , g# K7 u4 C) Y8 _; D) Z1 B* I            guss = otheraim' a1 G/ t9 j( j2 p3 q9 p5 o$ V
             1 k4 e$ N( j8 V
            #改变选择之后猜中汽车的次数统计 ; Y3 K4 ~0 h  P6 O
            if guss==rightaim:7 _$ q3 F/ R) M7 |( g7 H% W
                counts+=1& F  B  v  `3 \
            
    2 e. d- Z( Q  l9 Q. H! I1 s            #返回改变选择之后猜中汽车的概率 $ ^! D5 w, t: k" R+ I! l
        return counts/times  h' A6 Y( S' B, l
    print "改变选择之后的模拟一千次结果是:",moni(1000)0 o8 g; O6 \; ]+ n* |( m
    print "改变选择之后的模拟一万次结果是:",moni(10000)
    + h4 z, h! s( {' g7 C( x6 xprint "改变选择之后的模拟十万次结果是:",moni(100000)! X( L$ Z- s  E" w5 l, v3 \1 e
    print "改变选择之后的模拟一百万次结果是:",moni(1000000)
    : R4 F/ w; `9 y) q$ l6 |/ l7 wprint "改变选择之后的模拟一千万次结果是:",moni(10000000)
    2 |, P- E  T# t7 ^8 z3 R5 t. H2 h  w' O; |
    以下是模拟效果截图: 6 N3 s' f+ g6 |8 b% n& O# [

    - W, z/ \! D: V& \* B7 L- U+ H5 M% h9 ?9 u" d, Y5 `; k$ Z
    鄙人最后说几句:8 g3 ~9 o' r' I7 j2 ~
    从模拟的结果上来看还算是成功的,随着模拟的次数越来越多,结果越来越接近2/3,本来想打算再提高模拟次数的,但由于我的本本比较渣,会卡爆,所以只模拟到一千万次。* @" F& Q& l! h, E* n; j) i
    @百年孤独 @数学中国—罂粟 @madio
    $ Y2 R$ e- f  A* h4 |) I# {( Zps:不排除有错误,欢迎指正,欢迎交流,转载请注明出处,版权所有。
    ; W2 q  o( k, F. c5 Q. A3 Z/ {

    7 z* a1 c& P( t) {4 S
    * T$ z8 r- X1 _. V3 @" Z
    # [" {0 D. F) W3 u/ H
    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-6-3 02:06 , Processed in 1.837939 second(s), 50 queries .

    回顶部