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
  • 相关阅读:
    AcWing 1027. 方格取数 dp
    AcWing 1014. 登山 dp
    acwing 482. 合唱队形 dp
    LeetCode 1463. 摘樱桃II dp
    LeetCode 100. 相同的树 树的遍历
    LeetCode 336. 回文对 哈希
    LeetCode 815. 公交路线 最短路 哈希
    算法问题实战策略 DARPA大挑战 二分
    算法问题实战策略 LUNCHBOX 贪心
    AcWing 1100. 抓住那头牛 BFS
  • 原文地址:https://www.cnblogs.com/liao-lin/p/7077067.html
Copyright © 2011-2022 走看看