原神中为什么暴击暴伤比为1:2最好?

原神中的圣遗物属性搭配是一个既烧摩拉又有趣的问题。相信很多玩家听说过一个结论,“角色面板暴击暴伤比为1:2时,期望伤害最高”。那为什么会得到这个结论呢?这涉及到很多有趣的数学问题,这篇博客中我们尝试进行推导。但是,由于实际角色伤害还取决于攻击力,但是引入攻击力的会使问题变得很复杂,这里就认为攻击力是不变的。确切地说,是在更换不同圣遗物或武器后,角色攻击力保持不变。

伤害的数学期望

暴击率、暴击伤害,是动作游戏中很经典的两个属性。暴击率,就是指角色在一次攻击时发生暴击的概率。在原神中,假设一名角色的暴击率是 $p$,暴击伤害是 $q$,在不暴击的时候,伤害总值是 $a$,那么在攻击发生暴击时,当次攻击的伤害变为 $(1+q)a$。那么,对于攻击造成伤害这一事件,其取值 $A$ 服从如下分布列:

$1-p$$p$
$A$$a$$(1+q)a$

那么一次伤害的数学期望值 $e$ 就有

$$ \begin{aligned} e = E(A) &= (1-p)a+p(1+q)a \\ &= a + pqa \\ &= (1+pq)a \end{aligned} $$

在我们当前的假设中,可以认为 $a$ 是一个常数,$p$ 和 $q$ 是两个变量。那么我们分解将 $e$ 对 $p,q$ 求偏导,

$$ \frac{\partial e}{\partial p} = qa, \quad \frac{\partial e}{\partial q} = pa $$

由于 $a,p,q$ 都是正数,所以理论上,暴击率越高,暴击伤害越高,伤害期望也越高。但是这似乎与之前的结论矛盾。为什么会出现这个情况呢?

伤害期望的约束最大值

事实上,这是由于原神中“圣遗物”系统和“武器”系统的特性决定的。上述结论没有考虑到暴击率和暴击伤害取值的约束条件。下面先简述一下圣遗物和武器系统,来找到问题中的约束条件。

圣遗物和武器系统简介

原神中每个人物最初始的情况下,有 5% 的暴击率和 50% 的暴击伤害。出了每个人物突破会提升暴击率暴击伤害以外,这个数值可以通过装备不同的圣遗物和武器进行提升。原神中每个人物最多装备5件圣遗物和1把武器,每件圣遗物(按五星计算)有1个主属性和4个副属性,每把武器有一个主属性和一个副属性。对于圣遗物而言,有以下几条约束:

  • 圣遗物中只有“理之冠”(俗称“头”)有可能是暴击率或暴击伤害;每件圣遗物的副属性都有可能是暴击率和暴击伤害。但是所有主属性和副属性都不可能有重复的属性。
  • 每件圣遗物最多强化到20级,每次升级都会强化主属性,但每提升4级才会提升一次副属性(如果副属性不足4个则有限生成一个副属性)。
  • 每次强化虽然会强化到不同的属性,但是数值的比例是大概相同的,以使属性“总量”不会发生太大的变化。也就是说,不会出现一次强化出现100%暴击率的情况。
  • 每次提升属性时,提升到暴击率和暴击伤害的数值大约是 $1:2$ 的比例,也就是说,在一次提升时,如果提升的是暴击率且提升了3.8%,那么如果这次提升发生在暴击伤害上,则提升幅度大约是7.6%。

对于武器而言,相对来说就简单很多。每把武器的主属性必然是攻击力,副属性虽然可能是暴击率或暴击伤害,但都是确定的。级如果只看副属性是暴击率或暴击伤害的武器(俗称“暴击武器”或“暴伤武器”),平均每次升级时暴击率和暴击伤害提高的数值差不多也是 $1:2$ 的比例。

在这样的情况下,我们可以假设一个暴击率和暴击伤害的总量 $c$ ,这个量和暴击率与暴击伤害的关系就是

$$ c=2p+q $$

这将成为我们计算期望伤害最大值的约束条件。但事实上,我们不可能保证两件圣遗物的暴击暴伤总量完全相同,这里只是做一个理论计算,分析暴击率和暴击伤害的最佳配比。

暴击暴伤总量不变情况下的伤害期望最大值

根据之前推导的伤害期望 $e$ 与暴击暴伤的函数关系,和暴击暴伤总量 $c$ 与暴击爆伤函数关系的约束条件,有

$$ \begin{aligned} e &= (1+pq)a \\ c &= 2p + q \end{aligned} $$

要求 $e$ 的约束最大值,可以使用拉格朗日乘数法,构造 $\phi=2p+q-c$ ,$F=e+\lambda\phi$,可以得到下面的方程组

$$ \begin{aligned} \frac{\partial F}{\partial p} & = qa+2\lambda = 0 \\ \frac{\partial F}{\partial q} & = pa+\lambda = 0 \\ \frac{\partial F}{\partial \lambda} &= 2p+q -c = 0 \end{aligned} $$

通过解上述方程组可以很容易得到,当 $q=2p=\frac{1}{2}c$ 的时候,函数 $e$ 取得极值,此时 $\lambda=-\frac{1}{4}ca$。而由于极值点只有这么一个,所以这个就是最值点。那么这个是最大值还是最小值呢?

一种方法是,由于一般 $p \in [0.05,1]$ 而 $q\in[0.5, q_m]$,这里的 $q_m$ 是所有装备暴伤拉满时的数值。这个数值虽然我没有见过,但是肯定是存在而且确定的。虽然不知道,但没关系,因为当 $p=0.05$ 时,$q=c-0.1$,此时 $pq=0.05c-0.005$;而当 $p=\frac{1}{4}c$ 时,$pq=\frac{1}{8}c^2$。令

$$ g=\frac{1}{8}c^2-\frac{1}{20}c+\frac{1}{200} = \frac{1}{8}\left(c-\frac{1}{5}\right)^2 $$

显然,$g \geqslant 0$ 恒成立,当且仅当 $c=0.2$ 时 $g=0$。而人物的原始面板就已经保证了 $c=0.6$ ,搭配装备后只会使得 $c\geqslant 0.6$,所以 $\frac{1}{8}c^2 \geqslant 0.05c-0.005$ 。所以,当 $q=2p=\frac{1}{2}c$ 的时候,函数 $e$ 取得极大值。

另一种方法是,画个图看一下。用 Geogebra 画出这几个(隐)函数的图像,再把这个极值点标出来,就知道时最大值还是最小值了。

图中蓝色的绿色的曲面代表了函数 $e$ ,蓝色的平面代表了约束条件,红色的曲线就是满足约束条件时 $e$ 的可能取值,黑色的点就是极值点。显然,这是一个最大值点。

由此,我们最终得到结论:在暴击暴伤总量 $c$ 不变的情况下,当暴击率与暴击伤害比值为 $1:2$ 的时候,伤害期望是最高的

暴击头还是爆伤头

当角色有暴击武器或者暴伤武器的时候,这不是问题。由于属性稀释,直接选择另一个属性的理之冠即可。但是当角色没有暴伤武器或者暴击武器的时候,例如迪卢克和狼的末路,那么理之冠是选择暴击头还是爆伤头呢?

我们先假设其他圣遗物副属性完全没有暴击暴伤的情况。

当选择暴击头时,$p=0.361$ ,$q=0.5$ ,$pq=0.1802$ 。

当选择暴伤头时,$p=0.05$ ,$q=1.122$ , $pq=0.0561$ 。

这样就一目了然了,优先选择暴击头。那么这是什么原因呢?

一种简单的理解是属性稀释。确实,暴伤也是会被稀释的。准确地说所有属性都会被稀释,而当属性提升前的值 $x_0$ 越高时,提升量 $x$ 的稀释越严重。因为提升度 $t$ 有

$$ t = \frac{x}{x_0+x}, \frac{\partial t}{\partial x_0} = -\frac{x}{(x_0-x)^2} $$

所以 $t$ 随 $x_0$ 的增大而减小。暴伤基础值是 0.5,暴击基础值是 0.05 ,所以装备暴击头时提升幅度有8倍,但是带暴伤头时提升幅度只有2倍,所以最好带暴击头。

另一种理解,我们其实可以算出来消灭一只怪物所需要的平均攻击次数(这里简化一下)。因为怪物的血量 $m$ 是一定的,所需要的攻击次数 $n$ 就应该有

$$ \begin{aligned} n&=\frac{m}{e}=\frac{m}{(1+p(c-2p))a} \\ \frac{\partial n}{\partial p}&=-\frac{m}{e^2}(c-4p)a \end{aligned} $$

当 $p<\frac{1}{4}c$ 时,$n$ 递增,当 $p<\frac{1}{4}c$ 时,$n$ 递减。而只有理之冠的主属性有暴击暴伤时, $c$ 基本上是 1.222,所以其实 $p=0.3055$ 时,需要的攻击次数是最低的。而且,由于 $n$ 在大于0的部分是对称的,对称轴是 $\frac{1}{4}c$ ,所以装暴击头时 $p$ 的值离对称轴更近,所以总攻击次数更小。

对于迪卢克这种突破加暴击的角色,满级时暴击率是 0.242,暴击暴伤总量 $c$ 达到 1.606 。装备暴击头时,$p=0.553$ ,与 $c/4$ 差距是 0.1515;装备暴伤头时,暴击率与 $c/4$ 差距是 0.1595。所以还是装备暴击头更好,当然差距不大,完全可以看副属性那个好带那个。

此外还有一点,迪卢克是一个爆发不是很离谱的角色。对于优菈这种爆发离谱的角色,暴击率带高一些可以少凹几次,减少痛苦。

当然对于胡桃这样,突破加暴伤,暴伤专武,就不用纠结了,最终还是配平暴击暴伤比,尽量 $p=2q$,并且让 $c$ 越高越好。

感谢您的阅读,本文由 HPDell 的个人博客 版权所有。如若转载,请注明出处:HPDell 的个人博客(http://hpdell.github.io/理论/genshin-impact-critical/
自己动手写动态博客(二)
使用 CMake 统一管理并编译 C++/Python/R 算法包