0371 车牌号
* * * *
拉格朗日计划
* * * *
车牌号

俄勒冈州的汽车牌照由三个字母和三个一位的数字组成。

张三开车上班的路上会玩这样一个游戏:若他所看到的所有汽车牌照中有两个牌照上的三位数相加等于1000则获胜。

例如,例如MIC-012和HAN-988,以及RYU-500和SET-500都可以获胜。

假定所有的数字等概率地出现在牌照上,求获胜所需看到的汽车牌照数的期望值,结果四舍五入到小数点后8位。

本题难度:



解答

把所有的数字分成501组,其中:

第0组只含000,表示不存在能与之配对获胜的三位数字。

第500组只含500,表示需要见到两次500才能获胜。

其他数字两两一组,第n组包含$n$和$1000-n$,见过任意一组中的全部两个数字即可获胜。

现考虑两种情况:

第一种,已经见过一次500和1到499组中的k组,设此时期望还需$g(k)$次获胜,则有 $$g(k)=1+\frac{(k+1)\cdot g(k)+(k+1)\cdot 0+(998-2k)g(k+1)}{1000},$$ 等式右侧表示下一次看到号牌时:

有$k/1000$的机会看到这k组中已经出现过的号牌,$1/1000$的机会看到0,这两种情况状态不变,期望仍需$g(k)$次获胜。

有$k/1000$的机会看到这k组中还没出现过的号牌,$1/1000$的机会看到500,这两种情况状态直接获胜,因此不再需要额外的次数。

有$(998-2k)/1000$的机会看到1到499组中还没出现过组别中的牌,此时看到过的组数变为$k+1$,因此期望需要$g(k+1)$次获胜。

第二种,已经见过1到499组中的k组,但还未见过500,设此时期望还需$f(k)$次获胜,那么下一次看到号牌时有$1/1000$的机会进入$g(k)$的状态,其它情况与上面类似,即有 $$f(k)=1+\frac{(k+1)\cdot g(k)+k\cdot 0+g(k)+(998-2k)f(k+1)}{1000},$$ 递推计算即可得结果$40.66368097$。

注:为方便作浮点数除法和格式化输出,以下代码为Python 3:

f=g=0
for k in range(499, -1, -1):
    g=((998-2*k)*g+1000)/(999-k)
    f=(g+(998-2*k)*f+1000)/(999-k)
print(f"{f:.8f}")