放回、不放回的概率计算

有A,B,C…共9种不同卡片,每种卡片都有13张,每次取一张,如果是A卡片就拿走,不是就放回,求:取多少次,能让A卡片拿走大于等于3次的概率大于90%?

思路

考虑每一次取牌对当前状态的影响,考虑取牌分别是A和非A对当前状态的影响,构造状态转移函数,计算每一次取牌后各个状态的概率。

参考代码
iteration_id = 0
num = 14
pl = [0 for i in range(num)]
state = [0 for i in range(num)]
state[0] = 1

for i in range(num):
    pl[i] = (13 - i) / (117 - i)

while sum(state[3:]) <= 0.9:
    iteration_id += 1
    for i in range(num - 1, 0, -1):
        state[i] = state[i] * (1 - pl[i]) + state[i - 1] * pl[i - 1]
    state[0] = state[0] * (1 - pl[0])

print("Total need", iteration_id, "cards")
问题来源

https://www.zhihu.com/question/349265793/answer/848276041

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值