有意思的题目
从网上收集来的面试题,不定期更新。
1. 麦当劳出了一套儿童玩具,包括五个人物,买一个儿童套餐可以随机得到一个人物。假设一个店里面玩具的数量无限,问拿到5个人物所需要买的套餐数的期望值是多少?
这道题用暴力计算的方法是很难直接算得结果的,用递推就方便得多。
假设一共有m个人物,现在需要取得其中的指定的n个。(例如,一共有a, b, c, d, e 5个人物,现在想要取得其中的c, d, e)。设期望值为E(m, n)。现在买一份套餐。有可能我们运气比较好,恰好买到了这n个人物中的一个,那么接下来我们就只需要再取得剩下的(n-1)个;也有可能我们运气不好,买到的是那(m-n)个我们不需要的任务,那接下来还是得取得n个人物。
因此,E(m, n) = n / m * ( 1 + E(m, n-1) ) + (m - n) / m * ( 1 + E(m, n ) )
调整一下,就得到 E(m, n) = E(m, n-1) + m / n
所有的递推公式都需要知道初值才能求结果。在这里就是n = 0,显然,E(m, 0) = 0。
于是,E(5, 5) = 5/5 + 5/4 + 5/3 + 5/2 + 5/1 = 137/12
2. 英雄升级,从0级升到1级,概率100%。
从1级升到2级,有1/3的可能成功;1/3的可能停留原级;1/3的可能下降到0级;
从2级升到3级,有1/9的可能成功;4/9的可能停留原级;4/9的可能下降到1级。
每次升级要花费一个宝石,不管成功还是停留还是降级。
求英雄从0级升到3级平均花费的宝石数目。
据说是网易游戏的笔试题。也是用暴力计算非常难处理的题目。怎么办?仍然利用状态之间的转换关系。假设从第n 级(n = 0, 1, 2) 升级到第3级的概率为 E(n)。
对于第0级,花费一个宝石之后肯定升到第1级。因此有 E(0) = 1 + E(1)
对于第1级,花费一个宝石之后有1/3的概率下降到0级,1/3的概率停留原级,1/3的概率升到2级。不管结果如何,都需要花费一个宝石。因此有 E(1) = 1/3 * ( 1 + E(0) ) + 1/3 * (1 + E(1) ) + 1/3 * (1 + E(2) )。
对于第2级,同理有 E(2) = 4/9 * ( 1 + E(1) ) + 4/9 * ( 1 + E(2) ) + 1/9 * 1
解这个方程组就得到 E(0) = 30
这两个题目说明,当期望值很难从定义直接计算的时候,不妨考虑一下状态的变换关系,有时候思路就一下子明朗了。

浙公网安备 33010602011771号