Python实现抢七局获胜条件概率计算的问题求助
问题:Python递归实现抢七局获胜概率的错误排查
之前我尝试用Excel计算网球抢七局的获胜条件概率,但得到的结果并不准确。现在打算依据某论文第21-22页的递归公式,用Python来实现这一计算,却遇到了棘手的问题:
我编写了两个递归函数,用来计算不同比分下A选手的获胜概率:
def prob_tiebraker_game_A(Pa, Pb, a, b): if a == 7 and b >= 0 and b <=5: return 1 elif b == 7 and a >= 0 and a <=5: return 0 elif a == 6 and b == 6: return (Pa*(1-Pb))/(Pa*(1-Pb) + (1-Pa)*Pb) elif (a+b) % 2 ==0: return Pa*prob_tiebraker_game_B(Pa, Pb, a+1, b) + (1-Pa)*prob_tiebraker_game_B(Pa, Pb, a,b+1) elif (a+b) % 2 !=0: return Pa*prob_tiebraker_game_A(Pa, Pb, a+1, b) + (1-Pa)*prob_tiebraker_game_A(Pa, Pb, a,b+1) def prob_tiebraker_game_B(Pa, Pb, a, b): if b == 7 and a >= 0 and a <=5: return 1 elif a == 7 and b >= 0 and b <=5: return 0 elif a == 6 and b == 6: return (Pb*(1-Pa))/(Pb*(1-Pa) + (1-Pb)*Pa) elif (a+b) % 2 ==0: return Pb*prob_tiebraker_game_A(Pa, Pb, a+1, b) + (1-Pb) * prob_tiebraker_game_A(Pa, Pb, a,b+1) elif (a+b) % 2 !=0: return Pb*prob_tiebraker_game_B(Pa, Pb, a+1, b) + (1-Pb) * prob_tiebraker_game_B(Pa, Pb, a,b+1)
测试时发现,当设置Pa=0.62、Pb=0.6时,只有比分(0,0)、(6,6)以及所有一方拿到7分且另一方分数≤5的情况结果是正确的,其余(a,b)组合的计算结果都存在错误。我尝试修改过函数里的条件判断逻辑,但问题依然没有解决,希望能得到技术上的帮助,找出递归逻辑里的问题所在。
内容的提问来源于stack exchange,提问作者Disou
相关产品推荐
相关产品推荐

