面试中的概率问题 - 数学期望(2) - 武器升级需要的宝石数

问题描述:

这个笔试题来自今年的知名游戏公司,因为签了保密协定,为了避免麻烦,自行改编一下。

 

在一款游戏中,武器等级可以分为0-7级,武器每次升级需要一块宝石,每次升级可能出现三种情况:升一级、保持不变、降一级

 

已知i->i+1升一级概率为Ai,保持不变概率为Bi,降一级概率为Ci。

A0~A7,B0~B7,C0~C7均已知,其中从等级0到等级1必定成功,即A0=1,B0=0,C0=0

 

现在问你将武器从0级升级到3级需要的宝石数的期望?

 

如果大家在看这篇博文之前,没有阅读我之前的博文:面试题中的概率问题-数学期望(1),请大家先去看看,主要关注【数学期望中的递归特性

 

分析过程:

设f(x,y)表示从x升级到y的宝石数期望,则:

f(0,3)  =  1 + f(1,3)

f(1,3)  =  A1*(1+f(2,3)) + B1*(1+f(1,3)) + C1*(1+f(0,3))

f(2,3) =  A2*1 + B2*(1+f(2,3)) + C2*(1+f(1,3))

很明显,这是一个三元一次方程组,必定可以计算出f(0,3),f(1,3),f(2,3)

其中f(0,3)为最终的答案

 

其实,这个思想并不难,关键是有没有想到,下面做简单分析

  • f(0,3)用一块宝石升级到1级后,继续的期望是f(1,3) =>  f(0,3) = 1 +f(1,3)
  • f(x,y)用一块宝石升级一次后,有Ax的概率升一级,之后期望为f(x+1,y),这部分为Ax*(1+f(x+1,y)),之后部分类似分析,即可得到 f(x,y) = Ax*(1+f(x+1,y)) + Bx*(1+f(x,y)) + Cx*(1+f(x-1,y)),关于x与y的大小,还有一些边界就自己去考虑吧
  • f(x,x)为0

 

最终答案:

如果我们令[A0,B0,C0] = [1,0,0] ,[A1,B1,C1] = [1/3,1/3,1/3],[A2,B2,C2] = [1/9,4/9,4/9] ,那么f(0,3) = 30  f(1,3) = 29   f(2,3) = 25

 

注意,根据我们上面简单分析中的第二条f(x,y)的计算,其实可以解决升级到任意等级的需要的宝石数,包括将最高等级扩展到N,只要有对应的[Ai,Bi,Ci],因为实际上最后问题都是一个方程组,可以编程来解决,参考矩阵的相关知识,见数值计算。

你可能感兴趣的:(笔试面试)