【问题标题】:Cumulative Binomial Probability Python累积二项式概率 Python
【发布时间】: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


    【解决方案1】:

    这是 2^k 而不是 K^2,这就是问题所在

    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=2**k #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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-05
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 2019-09-13
      相关资源
      最近更新 更多