1. 项目背景与题目解析
这道P5104题目来自信息学奥林匹克竞赛(OI)题库,属于典型的概率与期望值计算问题。题目场景设定为"发红包"这个日常生活中常见的场景,但背后考察的是选手对连续型概率分布的理解和数学建模能力。
题目大意是:在一个微信群中,第一个人准备发出总金额为w元的红包,群里有n个人参与抢红包。红包金额的分配遵循以下规则:
- 第一个人会随机获得一个金额,这个金额在[0,w]区间内均匀分布
- 剩下的人按照同样的规则分配剩余金额
- 需要计算第k个人期望获得的金额
这类问题在实际编程竞赛中很常见,它巧妙地将生活场景与概率论知识结合起来,考察选手的数学抽象能力和编程实现技巧。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数学建模与理论分析
2.1 概率分布基础
首先我们需要理解均匀分布的概念。在区间[a,b]上的均匀分布,概率密度函数为:
f(x) = 1/(b-a) 当a≤x≤b
f(x) = 0 其他情况
对于第一个抢红包的人,他获得的金额X1服从[0,w]上的均匀分布,其期望值为:
E[X1] = (0 + w)/2 = w/2
2.2 递推关系建立
关键在于发现这个问题具有自相似性。对于第k个人,我们可以建立递推关系:
设Ek(w)表示当剩余金额为w时,第k个人的期望获得金额。那么:
E1(w) = w/2 (直接由均匀分布期望得出)
对于k>1的情况:
第一个人取走x金额后,剩余w-x金额由后面k-1个人分配
因此Ek(w) = E[Ek-1(w-X1)] = ∫(0到w) Ek-1(w-x) * (1/w) dx
通过变量替换y=w-x,可以转化为:
Ek(w) = (1/w) * ∫(0到w) Ek-1(y) dy
2.3 数学归纳法求解
我们可以用数学归纳法来求解这个递推关系:
基础情况k=1:
E1(w) = w/2
假设对于k-1成立:
Ek-1(w) = w/(2^(k-1))
那么对于k:
Ek(w) = (1/w) * ∫(0到w) y/(2^(k-1)) dy
= (1/w) * [y^2/(2^k)]|(0到w)
= (1/w) * (w^2/(2^k))
= w/(2^k)
因此,通过数学归纳法,我们得到通用公式:
Ek(w) = w/(2^k)
