《梦幻西游》电脑版官方论坛

标题: 全部情况的打书概率与期望计算详解 [打印本页]

作者: a129312931293    时间: 2019-3-12 16:30
标题: 全部情况的打书概率与期望计算详解
这是致敬 oO0檐水穿墙 大神的帖子,使用数学方式来展现打书的本质。首发在贴吧
作者: a129312931293    时间: 2019-3-12 16:30
首先确立一个原则:当我们用若干种兽决来打书时,总是从价值最低的书打到价值最高的书。
这个原则不管特殊技能是否存在,都成立。因为当打书完成时,越早打的书,总是承担越高地被打掉的风险,所以为了使总成本最低,必定是先打价值低的书。而当存在须弥等特殊技能时,也不认为不遵守该原则有什么收益。
既然这个原则成立,那么我们发现,只要当宝宝处于一种技能状态时,总是会去打固定的书 (并不相信所谓打书技巧,因为没有任何理由认为某种状态是特殊的,故打书掉的技能应该是完全随机的,即每个技能掉的概率相同)。通俗地讲,当我们打第二本书却掉了第一本时,我们只会选择下一本打掉了的第一本,而不会选择其他。
作者: a129312931293    时间: 2019-3-12 16:31
此时,若我们将宝宝的技能状态的所有可能性记作一个状态空间,那么每次打书实际上就是状态空间之间的概率转移,而且这种转移是确定的(因为打的书是确定的,而打书掉的技能概率是平均的,同时也是确定的),所以可以作出一个马尔科夫链。故每一种打书都是某种形式的马尔科夫链,计算目标的概率和成本期望的关键就是得出状态空间的概率转移矩阵。
为了使概率转移矩阵直观且易于计算,必须选择恰当的状态空间。由于在打书的过程中,我们不关心技能的顺序关系(没有打书玄学),同时,我们也不关心那些预计被顶替的技能是什么。
所以,可以用0和1来表示没有打上某本书或者打上了某本书。而根据前面的原则,我们打书是有一个固定的顺序的,将打书的顺序从后往前排,就可以用0和1的序列来表达宝宝当前的技能状态。比如,我们打书的顺序是1.偷袭2.必杀3.夜战4.吸血,那么1010就表示目前状态是四个格子中,有吸血无夜战有必杀无偷袭。以这种表示方式,我们就能用二进制数字来表达宝宝目前的状态了。对于任意一种打书,我们都能得到相应的状态空间。比如5个格子的宝宝,要打上必连夜偷吸,那么就用00000-11111总共2^5次方种(即32种)状态来表示。然后,我们可以发现,状态的概率转移矩阵变得显而易见了。
作者: 裸奔的蛋蛋    时间: 2019-3-12 16:31
有吸血无夜战有必杀无偷袭
作者: a129312931293    时间: 2019-3-12 16:33
本帖最后由 a129312931293 于 2019-3-15 00:51 编辑

1. 先从简单的例子开始演示,比如四蓝鬼将的打书,打书状态有16种,概率转移矩阵是16*16的矩阵,如下:
[attach]2324451[/attach]这个矩阵生成的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放到相应位置),下面作一个演示:[attach]2324452[/attach]
这个表说明的是,从第一次打书到第十五次打书,得到各个状态的技能的概率,第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本书。
如此,我们就已经知道所有打书方式的概率计算了(有特殊技能的情况在下面讨论),若是改书,则只需要改变计算时的初始状态,若不需要全部书都打上,只要满足一定情况就能用,也只需要稍微改变成本向量和概率矩阵,关于概率矩阵的改变和生成方法,将在下面给出。



作者: a129312931293    时间: 2019-3-12 16:34
然后讨论完成打书所需要的成本计算问题,这个由上一段代码即可计算,不过需要对成本向量作出具体修正,假设偷袭61w,必杀62w,夜战63w,吸血64w,那么成本向量c应当如下:
c=(61,62,61,63,61,62,61,64,61,62,61,63,61,62,61,0)
即使对于更大的状态空间,或者不同的数值,也可以用简单的操作得出成本向量,具体操作根据具体问题而定,这里就不给出了。
作者: a129312931293    时间: 2019-3-12 16:35
现在,我们有一个问题,怎么对任意数量的格子,给出相应的概率转移矩阵呢?当有n个格子时,我们容易知道,需要求出一个2^n*2^n的方阵,这里给出一种生成函数:
function [A] = creat(n)
A=zeros(2^n);
for i=1:2^n-1
number=i-1;
c=bitget(number,1:n);
m=find(c);
k=find(c==0,1);
t=sum(c);
A(i+2^(k-1),i)=(n-t)/n
for q=1:t
A(i+2^(k-1)-2^(m(q)-1),i)=1/n;
end
end
A(2^n,2^n)=1;
end
其中,n为技能数目,当然不要输入太大的数(比如在一般的家庭电脑输入10以上),因为会因为内存空间不足而卡死电脑或者申请时间过长。(当然在matlab中使用多重for是很难受的事,但这里为了省事,直接这样写)
作者: a129312931293    时间: 2019-3-12 16:35
最后,就是关于有特殊技能的情况了,这种情况需要对概率转移矩阵作改造
比如,对8技能的须弥胚子打书,则用00000001来表示只有须弥,没有其他辅助书,那么当打书打到须弥没了的时候,我们就认为打书已经完成,没有打书的必要了,所以最后一位为0的数(即偶数)的状态就全部为吸收态,用下面的代码改造:
>> K=creat(8)
>>for i=3:2:255
K(:,i)=0;
K(i,i)=1;
end
这样得到的矩阵K就是8技能须弥打书的概率转移矩阵,K^i的第j列,表示打书i-1次后,从j的状态出发,得到的状态的概率分布。我们由此可以算出从任意状态出发打书任意次后的状态概率了。而且,由于打书次数较大时,状态必然趋向稳定,故可以算出不计成本打书,打成这个胚子的概率。
[attach]2324453[/attach]
比如上表就说明了4技能须弥打书15次后,从不同状态出发的话,得到的状态概率。

作者: a129312931293    时间: 2019-3-12 16:37
提示: 该帖被管理员或版主屏蔽
作者: a129312931293    时间: 2019-3-12 16:38
再提供几个小场景:

作为一个09平民,想要一个爆炸资质的宝宝,当然要选变异鬼将,但是攻宠五大技能,必连夜吸偷,起码要打4个蓝技能(强烈建议连击用高连套,不要用连击打宝宝上面),但是现在我有两只鬼将可以选择,一只是没打书的四技能满攻满成长鬼将,一只是打完4技能的鬼将,但是比第一只贵,作为一个运气不好不坏的平民,应该选择哪只呢?

答案:请把蓝书价格*8.333加到没打书的鬼将身上,再比较
作者: a129312931293    时间: 2019-3-12 16:39
作为一个09平民,变异鬼将用得好好的,被楼主蛊惑,认为连击是辣鸡,要改书成必夜偷吸,那么到底平均要花多少钱呢?

答案:平均要打4本蓝书
作者: a129312931293    时间: 2019-3-12 16:40
作为一个09大爷,我就是喜欢变异鬼将的帅气,我就是忍受不了一点蓝色,我就是要打4技能全红!但是,作为一个机智的大爷,我想知道打书到底按什么顺序打,花的钱预计最少。

答案:从最便宜的打到最贵的
作者: a129312931293    时间: 2019-3-12 16:41
作为一个09大爷,我现在知道按什么顺序打红书了,但是我有一组五开号,我要全部配上4红鬼将,我要打很多次,所以要算算到底一般需要多少钱,方便我充钱,那么成本到底是多少呢?

答案:假设按a,b,c,d的顺序拍书,那么打一个四技能全红鬼将的成本是2.4666*a+2.2666*b+2.0*c+1.6*d
作者: 我来说句公道话    时间: 2019-3-12 16:54
答应我,日后请继续这么吊!
作者: 昵称2355447    时间: 2019-3-12 16:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: 达人华仔    时间: 2019-3-12 16:57
然而并没有用
作者: 十七呀    时间: 2019-3-12 16:57
数据太多了   我是什么便宜打什么
作者: 飞天大笨猪    时间: 2019-3-12 17:06
膜拜大神
作者: a129312931293    时间: 2019-3-12 17:06
十七呀 发表于 2019-3-12 16:57
数据太多了   我是什么便宜打什么

那些是例子,用来演示这个方法的

作者: a129312931293    时间: 2019-3-12 17:08
我来说句公道话 发表于 2019-3-12 16:54
答应我,日后请继续这么吊!

这就是极限了

作者: 尼玛,自恋    时间: 2019-3-12 17:09
花里胡哨4
一脸懵逼
作者: a129312931293    时间: 2019-3-12 17:09
提示: 该帖被管理员或版主屏蔽
作者: a129312931293    时间: 2019-3-12 17:09
达人华仔 发表于 2019-3-12 16:57
然而并没有用

充钱到位才是王道

作者: a129312931293    时间: 2019-3-12 17:10
飞天大笨猪 发表于 2019-3-12 17:06
膜拜大神

感谢支持

作者: a129312931293    时间: 2019-3-12 17:11
尼玛,自恋 发表于 2019-3-12 17:09
花里胡哨4
一脸懵逼

毕竟要求的前置知识多

作者: 50多岁的小伙子    时间: 2019-3-12 17:12
一堆我看不懂的文字和数字
作者: 一凡人    时间: 2019-3-12 17:14
咦,有打书攻略,这下吊了。
看了10秒。。。嗯?再看10秒。。。嗯?
前几天收藏的几只宝宝可以挑一个秒了
作者: a129312931293    时间: 2019-3-12 17:26
50多岁的小伙子 发表于 2019-3-12 17:12
一堆我看不懂的文字和数字

没关系啦,最后有例子

作者: 西粉    时间: 2019-3-12 17:26
顶顶顶
作者: a129312931293    时间: 2019-3-12 17:27
一凡人 发表于 2019-3-12 17:14
咦,有打书攻略,这下吊了。
看了10秒。。。嗯?再看10秒。。。嗯?
前几天收藏的几只宝宝可以挑一个秒了

虽然不知道发生了什么,但是加油

作者: a129312931293    时间: 2019-3-12 17:27
西粉 发表于 2019-3-12 17:26
顶顶顶

谢支持

作者: 王异    时间: 2019-3-12 17:40
打过特殊技能书的应该知道特殊技能前两本书基本不会掉
作者: 红糖炒芝麻    时间: 2019-3-13 00:06
一凡人 发表于 2019-3-12 17:14
咦,有打书攻略,这下吊了。
看了10秒。。。嗯?再看10秒。。。嗯?
前几天收藏的几只宝宝可以挑一个秒了

建议你把这个帖子也收藏了。省的到时候打废了想骂人但是又找不到帖子
作者: 虫虫小弟    时间: 2019-3-13 00:27
楼猪说的真好,给楼猪点赞啦
作者: 专业打图号    时间: 2019-3-13 00:30
我小学毕业,你写的什么东西?
作者: a129312931293    时间: 2019-3-13 01:12
虫虫小弟 发表于 2019-3-13 00:27
楼猪说的真好,给楼猪点赞啦

谢支持

作者: 坏男人&    时间: 2019-3-14 00:28
小手一抖,酱油到手,积分我有
作者: 龙翼∽天翔    时间: 2019-3-14 01:03
看不懂就对了,反正就是高端
作者: 武夷依梧    时间: 2019-3-14 01:43
我只想知道是不是百分百 我只相信百分百的东西
作者: 不一样11    时间: 2019-3-14 02:05
武夷依梧 发表于 2019-3-14 01:43
我只想知道是不是百分百 我只相信百分百的东西

这个不是攻略。只是通过数据展示打什么样的宝宝大概要花多少钱
作者: 洄游的死鱼    时间: 2019-3-14 18:46
楼主这个算的是大概要花多少钱 不是打书技巧
作者: deepseafish2015    时间: 2019-3-15 03:22
MARK
作者: 震蛋    时间: 2019-3-15 03:37
一脸懵逼进来,又一脸懵逼出去
作者: 我为天宫带盐    时间: 2019-3-15 07:21
楼主,数据贴需要整理下格式喔,@护卫攻 那个牧场的帖子不错,建议参考  你这太长了,真的
作者: a129312931293    时间: 2019-3-15 15:55
我为天宫带盐 发表于 2019-3-15 07:21
楼主,数据贴需要整理下格式喔,@护卫攻 那个牧场的帖子不错,建议参考  你这太长了,真的

这个不是数据贴,是在说明计算方式的,那些是例子

作者: 我为天宫带盐    时间: 2019-3-15 17:17
a129312931293 发表于 2019-3-15 15:55
这个不是数据贴,是在说明计算方式的,那些是例子

亲,我的意思是你的帖子里面数据太多,大家看到第一反应是头大。重点是分层次有条理的阐述效果会更好喔
作者: 小秋家的咖啡店    时间: 2019-3-15 17:33
懵逼书上懵逼果,懵逼树下你和我。
作者: 哎哟,打我呀!    时间: 2019-3-16 11:57
原谅我初中毕业没看懂
作者: 〈天问〉    时间: 2019-3-19 22:23
看不懂。。。是我数学没上好么
作者: agunqsp    时间: 2019-3-19 22:31
提示: 该帖被管理员或版主屏蔽
作者: 无聊玩的    时间: 2019-4-9 13:36
ABCDEF  蝴蝶认证法了。  发出来变成CBEDAF   F是雷电   能打高魔和高连么        楼主发的数据看不懂。。。
作者: 沧海蜉蝣    时间: 2020-8-21 11:36
不明觉厉,慢慢钻研你的方法看看
作者: KisofDeath    时间: 2023-4-17 23:51
本帖最后由 KisofDeath 于 2023-4-18 00:23 编辑
a129312931293 发表于 2019-3-12 16:33 广东
1. 先从简单的例子开始演示,比如四蓝鬼将的打书,打书状态有16种,概率转移矩阵是16*16的矩阵,如下:
这 ...

S=0,c(1,1:16)=1,c(1,16)=0
x(1:16,:1)=0,x(1,1)=1 //原来 x(1:16,1)=0,x(1,1)=1
for i=0:99
S=S+c*B^i*x
end //原来 End





欢迎光临 《梦幻西游》电脑版官方论坛 (http://xyq.netease.com/) Powered by Discuz! X3.3