Этот вопрос был задан снова ( Excel: условные вероятности выигрыша в игре с тай-брейком ), но ОП хотел получить ответ на основе Excel, и тот, который он / она получил, был не совсем точным.
Я пытаюсь рассчитать условную вероятность выигрыша матча тай-брейка, как описано в http://strategicgames.com.au/PhD.pdf, стр. 21-22.
Требуется кодирование двух рекурсивных формул: Формул (Я не могу прикрепить изображение из-за низкого повторения)
Это то, что я сделал до сих пор:
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, я должен получитьэти результаты: Результаты
Но я получаю неправильные числа для любых значений (a, b), кроме (0,0) и (6,6), (7 ,.)и (., 7), поскольку эти оценки зависят от первых трех условий в функциях, тривиальные для оценки.
Я пытался изменить другие условия, но безуспешно.Любая помощь оценена будет оценена