有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")