我试图计算累积二项式概率来解决 Rosalind 的“独立等位基因”问题,我认为我的程序是正确的,但结果每次都给我“错误”。
问题:
给定:两个正整数 k (k≤7) 和 N (N≤2k)。在这个问题中,我们从第 0 代具有基因型 Aa Bb 的 Tom 开始。汤姆在第一代有两个孩子,每个孩子有两个孩子,以此类推。每个生物总是与具有基因型 Aa Bb 的生物交配。
返回:至少 N Aa Bb 生物属于汤姆家谱的第 k 代的概率(不计算每个级别的 Aa Bb 配偶)。假设孟德尔第二定律适用于这些因素。
我的决议:
def factorial(n):
if n == 0:
return 1
else:
return float(n * factorial(n-1))
print('Nr of generations?')
K=float(input())
print('At least how many AaBb organisms?')
N=float(input())
a=K**2 #found the error!!!
b=factorial(a)
c=factorial(a-N)*factorial(N)
d=(b//c)*(0.25**N)*(0.75**(a-N))
e=[]
while N <= a:
c=factorial(a-N)*factorial(N)
val=(b//c)*(0.25**N)*(0.75**(a-N))
e.append(val)
N=N+1
print('The probability of at least X organisms AaBb is:')
print(round(sum(e),3)) #P(X ≥ x)
知道我可能做错了什么吗?