摘要:作者使用“状态转移法”建立数学模型分析《炉石传说》游戏中我们应该什么时候用傻龙,傻龙被削之前和之后有什么变化,有多大可能实现极限翻盘。
一、前言
“卧槽,傻龙被削了!”,“我去,第一张法术傻龙就被自然平衡了,我也是醉了。”,“傻龙给了我2张疾跑,过牌过死了……”,“厉害了,傻龙炎爆打脸实力翻盘!”……
没错上面几句话就是描述大家又爱又恨的尤格萨隆,又称傻龙,它的效果是:在本局对战中,你每施放过一法术,便随机施放一个法术(目标随机而定)。那么我们应该什么时候用傻龙,傻龙被削之前和之后有什么变化,有多大可能实现极限翻盘呢?如果你对这些感兴趣,那就跟随科协菌的分析,继续往下看吧。
图1
二、模型假设与模型建立
模型建立,难道要数学建模?没错,哈哈哈,你没有看错,我们将用数学建模来分析傻龙!我们使用数学建模中最基本的方法“状态转移法”来建立此模型。
我们记傻龙刚放到场面上法术释放前,整个场面的状态记为S0,每释放一次法术,法术产生的效果记为d,我们令释放第i个法术产生的效果记为di,那么我们有如下公式:
图2
其中n为法术释放的个数。
具体的流程图如下:
图3
其中傻龙被中止的条件有:己方英雄死亡;敌方英雄死亡;傻龙被沉默,被消灭,被变形(傻龙被削后)。
在模型假设之前,我们还需要定义两个名词,一个是场面状态,一个是场面优劣。
1. 场面状态
场面状态中我们考虑如下因素:敌我的英雄血量、护甲、攻击、武器攻击和耐久度;敌我的手牌数、牌库数量;敌我的过载数、奥秘数;敌我还剩的费;敌我场面随从的攻击、血量、状态(亡语,嘲讽等)。
2. 场面优劣
不同的卡组有着不同的韧性和作用,我们不能完全从场面的随从数量或者牌差优势来判定傻龙的上场是否有利。为此我们换个思路考虑,傻龙的费用为10费,如果傻龙释放法术结束后,产生的正面效果大于10费,那么则认为对场面有优势,否则认为是劣势。
根据一些基本法术效果,我们规定,过一张牌1.5费,弃一张牌少1.5费;召唤随从的费用为[(m+n)/2],m和n表示随从的攻击和血量,[x]表示不超过x的最大整数;造成1.5点伤害为1费,恢复4点生命为1费;得到3点护甲为1费,获得2攻击为1费。注意在计算费时我们不考虑奥秘、武器、过载、得到牌(乌鸦神像等)。我们后文称此为等价费的判定。
为了方便模型求解和模型结果分析,我们进行如下的模型假设:
(1) 所有牌不考虑连击;
(2) 牌库或者场面上不考虑有野兽、恶魔和鱼人;
(3) 神圣愤怒抽的牌的费用服从均匀分布U(0,10);
(4) 随机召唤的随从为该费的标准身材,如随机召唤出来的2费随从为2/3,随机召唤的4费随从为4/5;
(5) 复活术默认出来的随从身材为3/3;
(6) 不考虑法术暗影之握,即当释放该法术后,对后续法术没有任何影响;
(7) 假定场面初始状态为:敌我双方英雄血量为10点,手牌均为3张,牌库均有10张牌,我方随从为傻龙7/5,对方随从身材分别是5/6,3/4,2/3;
(8) 在释放傻龙之前己方已经释放了12个法术。
三、模型求解与结果
经过小编统计,目前炉石传说中标准模式中法术的数量为235个,所有法术就不在此一一列举了,这里放个当时统计的截图。
图4
我们采用matlab求解,既然有235个法术,就需要编235个matlab函数来表示不同的状态改变量,小编利用课余时间码了将近2个星期……
图5
Anyway,让我们现在一起来看看模型求解的结果。
1. 傻龙被削前
我们模拟召唤傻龙1000次,可以得到如下结果:
(1) 在1000次实验中,傻龙被提前中止的次数为44次,其中因为己方英雄死亡的次数为9次,敌方英雄死亡英雄次数为35次。
(2) 在1000次实验中,己方平均得到牌数为2.4540张,平均过牌数为1.3500张,敌方平均得到牌数为0.2760张,敌方平均过牌数为0.0330张。下面这张图为在1000次实验中己方得到牌数的概率分布。
图6
(3) 在1000次实验中,己方英雄受到最大伤害为15点,恢复最大生命值为20点;敌方英雄受到最大伤害为18点,恢复最大为8点。己方平均获得奥秘0.9990个,己方平均获得护甲1.1930,平均获得攻击0.7980。下图是己方英雄受到伤害/恢复生命和敌方英雄受到伤害/恢复生命的概率分布对比图。
图7
(4) 在1000次实验中,己方平均在场随从数1.8620,随从平均费为3.3687;敌方平均在场随从数1.0230,随从平均费为3.2930。下图是是己方和敌方在场随从数的概率分布图。
图8
(5) 在1000次实验中,根据前面对场面优势的定义和计算,有783次实验等价的费大于或等于10费,有217次实验等价的费小于10费。等价费的概率密度分布图如下。
图9
2. 傻龙被削后
我们模拟召唤傻龙1000次,可以得到如下结果:
(1) 在1000次实验中,傻龙被提前中止的次数为514次,其中因为己方英雄死亡的次数为5次,敌方英雄死亡英雄次数为16次,由于傻龙的消失而导致提前中止的次数为493次。平均法术个数为8.7570个,法术释放个数的概率分布图如下。
图10
(2) 在1000次实验中,己方平均得到牌数为1.8660张,平均过牌数为0.9290张,敌方平均得到牌数为0.2800张,敌方平均过牌数为0.0620张。下面这张图为在1000次实验中己方得到牌数的概率分布。
图11
(3) 在1000次实验中,己方英雄受到最大伤害为13点,恢复最大生命值为14点;敌方英雄受到最大伤害为16点,恢复最大为13点。己方平均获得奥秘0.7610个,己方平均获得护甲0.7840,平均获得攻击0.5860。下图是己方英雄受到伤害/恢复生命和敌方英雄受到伤害/恢复生命的概率分布对比图。
图12
(4) 在1000次实验中,己方平均在场随从数1.7760,随从平均费为3.7767;敌方平均在场随从数1.3730,随从平均费为2.8940。下图是是己方和敌方在场随从数的概率分布图。
图13
(5) 在1000次实验中,根据前面对场面优势的定义和计算,有750次实验等价的费大于或等于10费,有250次实验等价的费小于10费。等价费的概率密度分布图如下。
图14
四、结果分析和总结
我们将结果进行整理对比。
图15
由此我们得出以下结论:
(1) 傻龙其实很“友好”,不论是削之前还是削之后,怼死对面英雄的次数比把自己neng死的次数多。
(2) 现在可以回答傻龙被削在哪里了。根据结果,傻龙被削的地方主要有3点:
① “节目效果”!!!尼玛原来基本上稳定释放既定的法术量,傻龙被削之后,只有50%的可能释放既定的法术量,剩下的50%我们的傻龙要不然就意外身亡,要不然就别变了其他动物……
② 解场的效率。在傻龙削之前,傻龙能将对面清场的概率为45%,削之后能将对面清场的概率为34%。
③ 均衡了敌我英雄的承受伤害量和恢复量。在削之前,我们可以看到图中我方英雄主要是恢复血量,而敌方英雄“较集中”的受到伤害;削之后,敌我双方的承受伤害量的概率分布图更加接近,明显均衡了敌我英雄的承受伤害量和恢复量,极大地减小了敌方看到我方下傻龙的心理压力。
(3) 除了以上3点,傻龙在被削之前和之后的变化并不大,特别是在场面优势这一点上,被削之前和之后我出傻龙很大概率(75%以上)是不亏的,不像有些分析网站所说“削后玩傻龙纯靠运气”,削后用10费召傻龙仍是你清场、建立优势、享受游戏乐趣的最佳随从。
(4) 那么到底削之后应该怎样最优利用傻龙,既能发挥最大的作用,又不会因为拖到最后导致自己疲劳死?小编变换了不同的初始状态,不同的初始既定法术(由于篇幅有限,具体数据和图不在贴出),可以给你几点建议。
① 你最好在己方英雄4滴血以上(包括4滴血),牌库4张牌以上(包括4张牌)使用傻龙,否则你被傻龙喷死的概率将大于10%。
② 在敌方英雄血量不高于4(包括4)滴血,你可以来一发傻龙,看看“节目效果”,此时对面死亡的概率大于10%。
③ 你不用刻意去屯法术,法术大约用到5张以上就能发挥傻龙的威力了,此时你用傻龙不亏的概率为60%左右,将对面清到只剩一个随从或以下的概率为40%左右。
④ 我相信就算我不说你们也不会在优势的时候用傻龙吧(己方有2个随从,敌方空场),此时你用傻龙不亏的概率为20%左右。
五、最后再提几句
1. 本篇文章中的模型假设简化了一些炉石环境,虽然实际的结果会有偏差,但大体傻龙的功效,傻龙的作用是不会变的;
2. 关于炉石传说的随机性理解,从最开始的奥术飞弹、25仔,到发展过程中的传送门、发现牌,到现在的尤格萨隆、克总恩,炉石传说的卡牌随机性越来越高,很多人开始担心这款游戏的公平性,竞技性。在此我想说的是炉石传说是一款卡牌游戏,你不知道发牌员下一张会给你张什么牌,这就已经很随机了,现在做的只是从有卡牌就知道效果到有牌仍不知道效果,仅此而已。我想炉石传说最大的魅力就是各种随机效果叠加到一起给予你的乐趣和满足感。随机性让炉石传说更加变幻莫测,更加充满魅力!
3. 数学源于博弈,游戏就是博弈的一种类型,生活亦是一场博弈。用数学的思想去看待游戏、看待生活中的问题是理所应当的,也是我们应该掌握的。
声明:文章转自微信公众号【北理工数院科协】,版权归原作者所有,转载仅供学习使用,不用于任何商业用途,如有侵权请联系删除,谢谢。