|
5楼

楼主 |
发表于 2019-3-12 16:33:22
|
只看该作者
来自:广东
本帖最后由 a129312931293 于 2019-3-15 00:51 编辑
1. 先从简单的例子开始演示,比如四蓝鬼将的打书,打书状态有16种,概率转移矩阵是16*16的矩阵,如下:
这个矩阵生成的matlab代码如下:
>> x=zeros(16)
x(1,1)=1
for i=2:16
x(:,i)=B*x(:,i-1)
End
第一行到第十六实际表示了0000的状态到1111的状态。其中第i行j列项数据的意思是,从i这个状态打一本书的话(实际上已经确定是某本了),到达j这个状态的概率。
那么我们从某种状态出发打书,实际就是将上面这个矩阵(记为B)与当前的概率状态向量相乘,比如我们从四个垃圾技能开始打四蓝,就是将B不断与x=(1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)的转置作矩阵乘法(从其他状态出发,只需要将1放到相应位置),下面作一个演示:
这个表说明的是,从第一次打书到第十五次打书,得到各个状态的技能的概率,第j列的数据就是打书j-1次以后各个状态的概率分布,可以看到,打10本书内得到四蓝鬼将的概率是78.06%,打15本书内得到四蓝鬼将的概率是94.67%。这样,我们已经得到了打书k本内得到目的技能状态的概率了,但是,如果我们想知道平均需要打几本书才能得到一个四蓝鬼将,就要用另外一种算法,给出matlab代码:
>> S=0,c(1,1:16)=1,c(1,16)=0
x(1:16,:1)=0,x(1,1)=1
for i=0:99
S=S+c*B^i*x
End
可以得到结果S=8.3333……,把99换更大的数,结果依然不变,因为期望是收敛的。这里的x是初始状态,c是成本向量,这里为了算打书数目,故统一为1,表示除了最后打书成功的状态不用打书以外,其他状态都需要打1本书。
如此,我们就已经知道所有打书方式的概率计算了(有特殊技能的情况在下面讨论),若是改书,则只需要改变计算时的初始状态,若不需要全部书都打上,只要满足一定情况就能用,也只需要稍微改变成本向量和概率矩阵,关于概率矩阵的改变和生成方法,将在下面给出。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|