伴学笔记 数值操作的期望计算问题 | 豆包MarsCode AI刷题

89 阅读4分钟

一、题目背景与解析

问题描述
小R随机选择两个正整数 ab 之一,并将其乘以 2。这一操作将执行两次,之后计算两个数的和。题目要求计算操作结束后两个数之和的期望值。

关键点:

  1. 每次操作有 1/21/21/2 的概率选择 ab
  2. 两次独立操作后,最终和的期望值需要通过概率加权平均计算。

二、公式推导与思路分析

  1. 单次操作的效果:

    • 操作一共有两次,因此每个数字 aaa 或 bbb 都可能被选择并乘以 222 一次或两次。
    • 在某一次操作中,有 1/21/21/2 的概率选择 aaa 或 bbb。
  2. 结果空间分析:

    • 初始和为 a+ba + ba+b。

    • 每次被操作的数字会增加自身的倍数贡献,具体有以下几种情况:

      • aaa 被选两次:最终和为 4a+b4a + b4a+b。
      • bbb 被选两次:最终和为 a+4ba + 4ba+4b。
      • aaa 和 bbb 各被选一次:最终和为 2a+2b2a + 2b2a+2b。
  3. 期望值公式:

    • 对每种情况,考虑其概率和对应的和: E=14(4a+b)+14(a+4b)+12(2a+2b)E = \frac{1}{4}(4a + b) + \frac{1}{4}(a + 4b) + \frac{1}{2}(2a + 2b)E=41​(4a+b)+41​(a+4b)+21​(2a+2b)
    • 简化公式得到: E=94(a+b)E = \frac{9}{4}(a + b)E=49​(a+b)

因此,两个数之和的期望值公式为:

E=94(a+b)E = \frac{9}{4}(a + b)E=49​(a+b)


三、代码实现与解释

python

def solution(a: int, b: int) -> str:
    # 期望值公式 
    expected_value = 9 * (a + b) / 4
    # 格式化结果为两位小数
    return f"{expected_value:.2f}"

if __name__ == '__main__':
    # 测试用例
    print(solution(3, 3) == '13.50')  
    print(solution(5, 7) == '27.00')  
    print(solution(1, 1) == '4.50')

代码解释:

  1. 直接利用公式 E=94(a+b)E = \frac{9}{4}(a + b)E=49​(a+b) 计算期望值。
  2. 使用 f"{value:.2f}" 将结果格式化为两位小数,满足题目输出要求。

四、测试用例分析

测试用例1:

  • 输入:a = 3, b = 3
  • 计算: E=94(3+3)=94⋅6=13.5E = \frac{9}{4}(3 + 3) = \frac{9}{4} \cdot 6 = 13.5E=49​(3+3)=49​⋅6=13.5
  • 输出:'13.50'

测试用例2:

  • 输入:a = 5, b = 7
  • 计算: E=94(5+7)=94⋅12=27.0E = \frac{9}{4}(5 + 7) = \frac{9}{4} \cdot 12 = 27.0E=49​(5+7)=49​⋅12=27.0
  • 输出:'27.00'

测试用例3:

  • 输入:a = 1, b = 1
  • 计算: E=94(1+1)=94⋅2=4.5E = \frac{9}{4}(1 + 1) = \frac{9}{4} \cdot 2 = 4.5E=49​(1+1)=49​⋅2=4.5
  • 输出:'4.50'

五、知识总结与个人思考

1. 概率与期望的关系:

  • 期望值的计算是一种加权平均思想,即将每个可能结果按其概率进行加权求和。理解概率空间和结果的可能性分布是关键。

2. 数学公式化的重要性:

  • 本题展示了如何通过公式推导避免穷举复杂概率分布,从而提升效率和代码简洁性。

3. 格式化输出的注意点:

  • 使用 f-string 格式化输出非常便利,特别是在要求严格格式化结果的场景中。

个人思考:

  • 本题强调了公式推导的简化作用。在实际应用中,这种抽象思维有助于快速解决问题并优化代码逻辑。对于更复杂的期望值计算问题,也可以采用动态规划或递推的方式。

六、学习计划与建议

  1. 概率基础学习:

    • 复习概率论中的基本公式和概念,特别是期望值、独立事件和条件概率的计算。
  2. 应用场景拓展:

    • 练习其他涉及期望计算的题目,如博弈问题、随机变量的期望值计算等。
  3. 代码优化能力提升:

    • 结合实际问题练习公式推导和优化代码,提高数学建模能力。

七、总结

本题通过概率与期望的简单应用,展示了如何利用数学推导高效求解实际问题。公式推导是解决此类问题的核心,通过简化计算避免了复杂的穷举过程。掌握这类问题的思路,可以帮助我们在算法设计和概率应用中更上一层楼!