小言_互联网的博客

放回、不放回的概率计算

562人阅读  评论(0)

有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


转载:https://blog.csdn.net/zhangzhengyi03539/article/details/102391081
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场