zoukankan      html  css  js  c++  java
  • 概率模型-三门问题

    三门问题

    网上看到的三门问题,觉得不错,用python尝试下验证

    三门问题
    三门问题是一个源自博弈论的数学游戏问题,这个游戏的玩法是:参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门就可以赢得该汽车,而另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人会开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机会率?如果严格按照上述的条件的话,答案是会—换门的话,赢得汽车的机会率是 2/3。

    具体分析:
    坚持选择,不更换情况:

     门1 门2 门3坚持选择门1的结果
     汽车 山羊 山羊 得到汽车
     山羊 汽车 山羊 得到山羊
     山羊 山羊 汽车 得到山羊

    打开一扇山羊门后,更换选择情况:

     门1 门2 门3 获胜者的选择重新选择的结果
     汽车 山羊 山羊 门1换为门2或门3 得到山羊
     山羊 汽车 山羊 门1换为门2 得到汽车
     山羊 山羊 汽车 门1换为门3 得到汽车

    如上:可以直观的看到。重新选择得到汽车的概率为2/3,概率更大。

    利用python程序模拟三门问题:

    import random
    
    #坚持选择模拟10000次
    prize = ['goat','goat','car']
    count = 0
    for i in range(10000):
        random.shuffle(prize)
        if prize[random.randint(0,2)] == 'car':
            count += 1
    print('坚持选择的概率:%.6f' %(count/10000))
    
    #改变选择,模拟10000次
    count = 0
    for i in range(10000):
        prize = ['goat','goat','car']
        random.shuffle(prize)
        choice = random.randint(0,2)
        prize.pop(choice)
        prize.remove('goat')
        if prize[0] == 'car':
            count += 1
    print('更改选择的概率:%6f' %(count/10000))
    
    #执行结果:
    坚持选择的概率:0.331100
    更改选择的概率:0.666100
  • 相关阅读:
    3、取邮件
    9、将标准字符流写到文件中
    8、使用转换流处理标准输入
    6、数据流
    关闭子窗体时刷新父页面
    sql索引规则
    DataTable DataRow[] 排序 多列
    Oracle 自定义函数创建同义词、存储过程或表创建同义词
    C# DataTable 排序
    sql 分组后每组查询10个
  • 原文地址:https://www.cnblogs.com/liao-lin/p/7077067.html
Copyright © 2011-2022 走看看