概率论——赠券收集问题
题意
有 n n n中不同的邮票。现在想购买所有种类的邮票,第 i i i次购买一张邮票需要花费 i i i元,并且购买到的这张邮票的种类的概率均等即均为 1 n \frac{1}{n} n1,求花费的期望。
题解
根据等差数列求和公式,购买次数为 x x x的花费为 x ( x + 1 ) 2 \frac{x(x+1)}{2} 2x(x+1),我们所求的就是 E ( x ( x + 1 ) 2 ) E(\frac{x(x+1)}{2}) E(2x(x+1)),即:
E ( x ( x + 1 ) 2 ) = E ( x 2 + x 2 ) = E ( x 2 ) + E ( x ) 2 E(\frac{x(x+1)}{2}) = E(\frac{x^2+x}{2}) = \frac{E(x^2) + E(x)}{2} E(2x(x+1))=E(2x2+x)=2E(x2)+E(x)
根据方差与期望之间的关系 E ( x 2 ) = D ( x ) + E 2 ( x ) E(x^2) = D(x) + E^2(x) E(x2)=D(x)+E2(x),我们有:
E ( x ( x + 1 ) 2 ) = D ( x ) + E 2 ( x ) + E ( x ) 2 E(\frac{x(x+1)}{2}) = \frac{D(x) + E^2(x) + E(x)}{2} E(2x(x+1))=2D(x)+E2(x)+E(x)
此问题就变成了:
有 n n n中不同的邮票。现在想购买所有种类的邮票,一次只能购买一张邮票,并且购买到的这张邮票的种类的概率均等即均为 1 n \frac{1}{n} n1,求购买的次数的期望和方差。
我们定义 x i x_i xi为从已经买到了 i − 1 i-1 i−1张不同种类的邮票开始,到购买到 i i i张不同种类的邮票结束所购买的次数,根据期望的线性性,有:
E ( x ) = E ( ∑ i = 1 n x i ) = ∑ i = 1 n E ( x i ) E(x) = E(\sum_{i=1}^nx_i) = \sum_{i=1}^n E(x_i) E(x)=E(i=1∑nxi)=i=1∑nE(xi)
其中 x i ∼ G ( n − i + 1 n ) x_i \sim G(\frac{n-i+1}{n}) xi∼G(nn−i+1), G G G为几何分布。
几何分布 x ∼ G ( p ) x \sim G(p) x∼G(p),期望 E ( x ) = 1 p E(x) = \frac{1}{p} E(x)=p1,方差 D ( x ) = 1 − p p 2 D(x) = \frac{1-p}{p^2} D(x)=p21−p
E ( x i ) = n n − i + 1 E(x_i) = \frac{n}{n-i+1} E(xi)=n−i+1n
则带入上式:
E ( x ) = ∑ i = 1 n n n − i + 1 = n ∑ i = 1 n 1 i = n H n E(x) = \sum_{i = 1}^n \frac{n}{n-i+1} = n \sum_{i = 1}^n \frac{1}{i} = nH_n E(x)=i=1∑nn−i+1n=ni=1∑ni1=nHn
下一步,求 D ( x ) D(x) D(x),因为 x i x_i xi之间相互独立,协方差等于 0 0 0,故:
D ( x ) = D ( ∑ i = 1 n x i ) = ∑ i = 1 n D ( x i ) = ∑ i = 1 n n ( i − 1 ) ( n − i + 1 ) 2 = n ∑ i = 1 n n − ( n − i + 1 ) ( n − i + 1 ) 2 = n 2 ∑ i = 1 n 1 i 2 − n ∑ i = 1 n 1 i = n 2 H n ( 2 ) − n H n D(x) = D(\sum_{i=1}^nx_i) = \sum_{i=1}^n D(x_i) \\ = \sum_{i=1}^n \frac{n(i-1)}{(n-i+1)^2} = n \sum_{i=1}^n \frac{n-(n-i+1)}{(n-i+1)^2}\\ = n^2 \sum_{i=1}^n \frac{1}{i^2} - n \sum_{i=1}^n \frac{1}{i} \\ = n^2H^{(2)}_n-nH_n D(x)=D(i=1∑nxi)=i=1∑nD(xi)=i=1∑n(n−i+1)2n(i−1)=ni=1∑n(n−i+1)2n−(n−i+1)=n2i=1∑ni21−ni=1∑ni1=n2Hn(2)−nHn
带入上式:
E ( x ( x + 1 ) 2 ) = D ( x ) + E 2 ( x ) + E ( x ) 2 = n 2 ( H n ( 2 ) + H n 2 ) 2 E(\frac{x(x+1)}{2}) = \frac{D(x) + E^2(x) + E(x)}{2} \\ = \frac{n^2(H^{(2)}_n + H^2_n)}{2} E(2x(x+1))=2D(x)+E2(x)+E(x)=2n2(Hn(2)+Hn2)
代码
我们只需要循环计算一下调和数列的值即可,时间复杂度 O ( n ) O(n) O(n),空间复杂度 O ( 1 ) O(1) O(1)。
int main()
{
int n;
scanf("%d", &n);
double h = 0;
double h2 = 0;
for (int i = 1; i <= n; i++)
{
h += 1.0 / i;
h2 += (1.0 / i) * (1.0 / i);
}
double ans = (h2 + h * h) * n * n / 2;
printf("%.2lf", ans);
return 0;
}
总结
- 期望的线性性(如何对期望进行拆解)
- 期望与方差的关系
- 几何分布的期望和方差的公式