今天逛 v2ex 看到一个挺有意思的问题:
假如我去吃火锅,已知锅里有 N 个鹌鹑蛋,我想要把这些蛋捞来吃。每个蛋被捞到的概率均为 P ,并且一次捞出的个数没有限制。但是,如果我连续 T 次都一个没捞到,那我就会放弃。
问题:当我放弃后,锅里剩下的鹌鹑蛋的个数的期望 E 是多少?(可以假设 N=10, P=0.2, T=5 )
这道题如果是做算法题的话,很容易想到用 DP 解,定义状态 $(n,k)$ 表示在锅中还剩 $n$ 个蛋并且已经白给了 $k$ 次后,锅中剩下的蛋的个数。
显然,从状态 $(n,k)$ 可以转换到 $(n, k+1)$(又白给)、$(n-l, 0)$(捞起来 $l$ 个,其中 $l \in \left[1, n\right]$)。
设 $f(n,k)$ 为状态 $(n,k)$ 剩下的蛋的期望,有转移方程:
f(n,k)=(1−p)nf(n,k+1)+l=1∑nCnlpl(1−p)n−lf(n−l,0)(1.1)
注意到方程 $(1.1)$ 中,右侧的求和与 $k$ 无关。将此记为 $g(n)$,有
f(n,k)=(1−p)nf(n,k+1)+g(n)(1.2)
令 $h(n)=\frac{1}{(1-p)^n -1}g(n)$,则有
f(n,k)+h(n)=(1−p)n[f(n,k+1)+h(n)](1.3)
结合边界条件
f(n,T)=n(1.4)
我们可以得到
f(n,0)+h(n)=((1−p)n)T(f(n,T)+h(n))=(1−p)nT(n+h(n))(1.5)
因此,
f(n,0)=n(1−p)nT+((1−p)nT−1)h(n)=n(1−p)nT+(1−p)n−1(1−p)nT−1g(n)(1.6)
将 $f(n,0)$ 记为 $f(n)$ 并展开 $g(n)$,我们得到
f(n)=n(1−p)nT+(1−p)n−1(1−p)nT−1l=1∑nCnlpl(1−p)n−lf(n−l)(1.7)
式 $(1.7)$ 是我目前能得到的比较好的结果,尝试消去 $f(n-l)$ 无果。
式 $(1.7)$ 具体可以通过递推求解。计算其前几项可得:
f(0)f(1)f(2)f(3)=0=(1−p)T=2(1−p)2T+p−22((1−p)2T−1)(1−p)T+1=3(1−p)3T+(1−p)3−13p((1−p)3T−1)(2(1−p)T+1+p−22(p−1)2((1−p)2T−1)+p)(1−p)T+1(1.8)
如果代入数据($p=0.2,T=5$),可以得到结果
f(0)f(1)f(2)f(3)=0=31251024=0.32768=3051757812514488051712=0.474744=931322574615478515625491898817322794070016=0.528172(1.9)
分别代表锅中还有 $n$ 个蛋时,剩下蛋数量的期望。