rosalind Independent Alleles

发布于 2024-03-10  3 次阅读


def calculate_probability(k, N):
    total_organisms = 2 ** k  # 第k代有机体的总数
    p_AaBb = 0.25  # Aa Bb基因型的概率

    # 计算至少N个Aa Bb基因型有机体的概率
    probability = 0
    for i in range(N, total_organisms + 1):
        probability += binomial_coefficient(total_organisms, i) * (p_AaBb ** i) * ((1 - p_AaBb) ** (total_organisms - i))
        probability = round(probability,3)
    return probability

def binomial_coefficient(n, k):
    if k > n - k:
        k = n - k
    result = 1
    for i in range(k):
        result *= (n - i)
        result //= (i + 1)
    return result

# 输入k和N的值
k = int(input("请输入k的值(k ≤ 7):"))
N = int(input("请输入N的值(N ≤ 2^k):"))

# 计算概率并打印结果
probability = calculate_probability(k, N)
print("在第{}代中至少有{}个Aa Bb基因型的概率为:{}".format(k, N, probability))
最后更新于 2024-03-10