三门问题123

import random


class D:
    contain = 'sheep'

    def __repr__(self):
        return 'There is a ' + self.contain + ' behind this door'


def three_door(reselect, redo=100000000):
    right = 0
    for _ in range(redo):
        three_door = [D(), D(), D()]
        random.choice(three_door).contain = 's'
        choose_door = random.choice(three_door)
        rother_door = [door for door in three_door if not door is choose_door]
        for door in rother_door:
            if door.contain == 'sheep':
                rother_door.remove(door)
                break
        if reselect:
            choose_door = rother_door.pop()
        if choose_door.contain == 's':
            right += 1
    print('进行了{0}次三门问题,是否重选 = {1},选中s概率为{2:.2%}'.format(redo, reselect, right / redo))


three_door(False, 10000)
three_door(True, 10000)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值