关于暴击、闪避、格挡、破击触发概率问题
修改于2023/05/30838 浏览主线攻略
事情的起因是这样的,一名萌新闲得无聊突发奇想这游戏的暴击、闪避、格挡、破击率的计算公式是什么。恰巧这位萌新是一个计量人,有着计量魂,于是当即决定尝试把公式拟合出来。
首先我假设了在暴击充分大的时候暴击率应该接近100%也就是1。并且根据游戏中已知的信息暴击为0时暴击率是0。
满足这种假设的最典型的一个式子是一种分式线性函数f(x)=x/(k+x)。于是我初步决定选用的用于拟合的模型为p=b/(k+b),其中p是暴击率,b是暴击,k是一个常数。
然后我将上述式子改写为k=b(1-p)/p,然后进行数据的选取和计算。本次拟合选取的数据为43级法师。在选取数据时我不仅选取了暴击和暴击率数据,我还选取了闪避、格挡、破击的数据来计算k值(因为同种数据即使可以通过调换宝石来取得不同的样本,但是样本总量还是太少了,并且其它种类的数据也可能采用相同形式的公式)。并且创建了一个向量t来记录数据的种类,暴击记作1、格挡记作2、闪避记作3、破击记作4。然后通过k对于t的线性回归来分析不同数据的k值是否有差异以及k值是否显著。

回归分析结果如下:

可以看到t的P值高达0.6,可以说显著性非常差,能够拒绝“不同种类数据的k值存在显著差异”的假设,而常数项的显著性非常好。因此我们可以认为不论是哪一种数据的k值都是8246.67附近的某个数。
由于这个数是人为规定的,所以我认为k值的实际值应该是8250,之所以常数项出现误差是因为在计量分析过程中没有考虑游戏的舍入误差,导致了计量过程和游戏的舍入误差不一致。
此后,我将k=8250代入进行计算:

事实上计算出来的数据通过四舍五入精确到0.001位就是我们的观测值。
不过这一模型仍然存在需要检验的地方,例如:
(1)由于萌新达不到更高的属性,这一计算公式只在两三千属性这一范围内测试过。
(2)该公式只检验了法师的数据,不能排除不同职业之间计算公式存在差异的可能。
#————————————————————
补充1:在计算了44级法师的数据后,我发现k值由8250变为了8733,由此推测k值会会随等级变化而提高。但由于样本数量不足目前尚未拟合出公式。
补充2:从43到50级的数据来看,k与等级的回归结果与线性模型吻合程度良好。


————————————————————————————
总结
本文拟合得到的,该游戏涉及概率的属性与触发概率之间的计算公式为:
触发概率=对应属性/(k+对应属性)
其中k会随着等级的提高而提高,由于缺乏样本目前尚未拟合出k随等级变化的公式。在43级时为8250,在44级时为8733。
这一公式在法师两三千属性这一范围内完全吻合。
通过这一公式可以推测出达到特定触发概率需要的属性值的计算公式:
对应属性=k*触发概率/(1-触发概率)
该公式有助于指导更好的规划各类触发属性的发展。