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

编写Python函数求解健康与患病人群的平衡比例问题

健康与患病人群平衡比例计算及Python实现

一、平衡比例的数学推导

平衡状态下,每日健康人群和患病人群的数量不再变化,即当天的健康人数等于前一天的健康人数,患病人数同理。

设定:

  • H:平衡时的健康人数
  • C:平衡时的患病人数

根据题目规则,可列出等式:

H = 0.8H + 0.1C
C = 0.9C + 0.2H

整理第一个等式:
0.2H = 0.1C → H:C = 1:2

总人数固定为 150+120=270,代入得平衡时H=90,C=180,比例为1:2。

注:你之前计算的132:138(22:23)是第一天的人群数量变化,并非最终平衡状态。

二、Python实现

方法1:直接通过数学公式计算平衡比例

def calculate_balance_ratio():
    # 平衡时满足 0.2H = 0.1C → H/C = 0.1/0.2 = 1/2
    h_ratio = 1
    c_ratio = 2
    return f"健康:患病 = {h_ratio}:{c_ratio}"

# 调用示例
print(calculate_balance_ratio())

方法2:模拟每日人群变化,直到达到平衡

def simulate_balance(initial_healthy, initial_sick, tolerance=1e-6):
    h, c = initial_healthy, initial_sick
    while True:
        new_h = 0.8 * h + 0.1 * c
        new_c = 0.9 * c + 0.2 * h
        # 检查是否达到平衡(变化量小于阈值)
        if abs(new_h - h) < tolerance and abs(new_c - c) < tolerance:
            break
        h, c = new_h, new_c
    # 计算最简比例
    gcd_val = int(min(round(h), round(c)))
    # 求最大公约数
    def gcd(a, b):
        while b:
            a, b = b, a % b
        return a
    common_divisor = gcd(round(h), round(c))
    h_ratio = round(h) // common_divisor
    c_ratio = round(c) // common_divisor
    return f"平衡时健康人数: {round(h)}, 患病人数: {round(c)}, 比例: {h_ratio}:{c_ratio}"

# 调用示例
print(simulate_balance(150, 120))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:03:24