You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rosalind的Independent Alleles问题累积二项概率Python计算错误排查

代码存在的核心错误

  • 个体总数计算错误:第k代的总个体数为2^k(每代个体数翻倍),你代码中写的a=K**2计算的是K的平方,仅在K=2时结果巧合一致,其余数值都会出错,正确写法为a = 2 ** int(K)。
  • 阶乘计算精度问题:你定义的factorial函数返回值为浮点型,当K取值较大时(比如K=7时总个体数为128),大阶乘的浮点存储会丢失精度,后续用//整除计算组合数的结果必然错误。建议直接使用Python 3.10+内置的math.comb计算组合数,无需自行实现阶乘,既高效又能避免精度问题。
  • 输入类型冗余:K和N均为正整数,转换为float没有必要,直接转换为int更符合运算逻辑。

修正后的参考代码

import math

k = int(input('Nr of generations?'))
n = int(input('At least how many AaBb organisms?'))
total = 2 ** k
prob_sum = 0
for x in range(n, total + 1):
    # 计算二项概率 P(X=x) = C(total, x) * 0.25^x * 0.75^(total-x)
    comb = math.comb(total, x)
    prob_sum += comb * (0.25 ** x) * (0.75 ** (total - x))
print('The probability of at least X organisms AaBb is:')
print(round(prob_sum, 3))

内容的提问来源于stack exchange,提问作者MarianaZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:09:05