【发布时间】:2021-09-24 11:50:28
【问题描述】:
我尝试计算累积二项式概率来解决 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)
知道我做错了什么吗?
【问题讨论】:
标签: python bioinformatics rosalind