美文网首页
Python验证三门问题

Python验证三门问题

作者: XH_hector | 来源:发表于2020-12-31 22:10 被阅读0次

    三门问题(Monty Hall problem)蒙提霍尔悖论,大致出自美国的电视游戏节目Let's Make a Deal。问题名字来自该节目的主持人蒙提·霍尔(Monty Hall)。参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门是否会增加参赛者赢得汽车的机率。

    from random import randint

    i = 0 #用于计数模拟的次数

    count = 0

    count1 = 0

    while True:

        bList = [1,2,3]#代表3扇门

        i += 1

        a=randint(1,3) #随机生成数字的字门后面代表汽车

        b=randint(1,3) #参赛选手随机猜测的答案

        if a == b:

            count1 += 1#模拟直接中奖的次数

        for x in range(3):

            if bList[x] != a and bList[x] != b:#打开一扇不是汽车也不是参赛选手选择的门。

                bList.remove(bList[x])

                break

        for x in range(2):#在剩余的两扇门后面,统计不是选手选择的,但等于答案的次数。

            if bList[x] != b and bList[x] == a:

                count +=1

                break       

        if i == 2500000:#测试250万次

            break

    print('选手不换门中奖的概率{:.2f}%\n'.format(count1/i*100))

    print('选手换门后中奖的概率{:.2f}%'.format(count/i*100))

    结果是这样的:

    相关文章

      网友评论

          本文标题:Python验证三门问题

          本文链接:https://www.haomeiwen.com/subject/cvtdoktx.html