研究三门问题以及更多门问题换门概率


import random

def play(n,change):
    door = [i for i in range(0,n)]   # 0-n-1代表 n 个门
    has_car = [0 for _ in range(0,n)]
    # 生成一个答案
    true_answer = random.choice(door)
    has_car[true_answer] = 1
    # 获取参赛者的答案
    your_answer = random.choice(door)

    if has_car[your_answer] == 1:
        # 如果换
        if change == True:
            return False
        else:
            return True
    else:
        if change == False:
            return False
        else:
            door.remove(your_answer)
            # 主持人选一个有山羊的门开启
            choose = random.choice(door)
            while choose == true_answer:
                choose = random.choice(door)
            door.remove(choose)
            second_answer = random.choice(door)
            if has_car[second_answer] == 1:
                return True
            return False


def fun(n,change):
    num = 100000
    i = num
    num_win = 0
    while i!=0:
        i -=1
        win = play(n,change)
        if win:
            num_win+=1
    return num_win / num

if __name__ == '__main__':
    n = int(input("请输入一个数字表示有几个门n\n"))
    print("每次都不换的获得车的概率是{}".format(fun(n,False)))
    print("每次都换获得车的概率是{}".format(fun(n,True)))





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wniuniu_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值