Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编写python代码来计算递归公式_Python - Fatal编程技术网

编写python代码来计算递归公式

编写python代码来计算递归公式,python,Python,在游戏中,每回合由骰子的掷骰组成,当骰子为偶数时,玩家E得一分,当骰子为奇数时,玩家O得一分。第一个累积7分的玩家赢得奖金。假设骰子是公平的,游戏中断,E领先4−2.编写Python 3代码来计算递归公式,以确定在上述情况下E得到的货币分数,其中p=0.5、E=4、o=2和m=7。写下E的比例 从给出的问题中,我们可以得出p=0.5,m=7,e=4,o=2。假设A是事件玩家E获胜,其中m-E=3轮获胜,B是事件玩家O获胜m-O=5轮获胜P(A,B)=P.P(A-1,B)+(1-P)P(A,B-1

在游戏中,每回合由骰子的掷骰组成,当骰子为偶数时,玩家E得一分,当骰子为奇数时,玩家O得一分。第一个累积7分的玩家赢得奖金。假设骰子是公平的,游戏中断,E领先4−2.编写Python 3代码来计算递归公式,以确定在上述情况下E得到的货币分数,其中
p=0.5、E=4、o=2和m=7
。写下E的比例

从给出的问题中,我们可以得出
p=0.5,m=7,e=4,o=2
。假设A是事件玩家E获胜,其中
m-E=3
轮获胜,B是事件玩家O获胜
m-O=5
轮获胜<代码>P(A,B)=P.P(A-1,B)+(1-P)P(A,B-1)所有正整数k的边界
P(0,k)=1,P(k,0)=0
。因此,一般的递归公式将是
P(m-e,m-o)=P.P(m-e-1,m-o)+(1-P)P(m-e,m-o-1)$,用$P,m,e,o表示


但是,我不确定如何将我导出的这个数学公式转换为Python代码?

对于这个问题,您并不需要递归。你想知道在你得到5次赔率之前,得到3次均等的概率是多少。这意味着我们需要在接下来的3+5-1=7次尝试中至少获得3个偶数的概率(因为如果你只获得2个偶数,你将获得5个赔率,O将获胜)

编写一个非递归函数,使用所有参数(p、e、o、m),以这种方式简单地计算所需的数量,要容易得多。如果骰子不公平,您还可以设置获胜方的概率:

from itertools import permutations

def combos(win, avail):
    array = [1]*win + [0]*(avail-win)
    return len(set(permutations(array)))

def win_probability(p_winner, winner_score, loser_score, max_score):
    winner_needs = max_score - winner_score
    loser_needs = max_score - loser_score
    available_rolls = winner_needs + loser_needs - 1
    prob = 0
    for winner_rolls in range(winner_needs, available_rolls + 1):
        prob += combos(winner_rolls, available_rolls) \
            * p_winner ** winner_rolls \
            * (1 - p_winner) ** (available_rolls - winner_rolls)
    return prob

print(win_probability(.5,4,2,7))

'''
Out:
    0.7734375
'''

你知道如何用Python进行递归吗?也就是说,如何编写递归函数?