一个关于暴击的概率问题

在 WoW 里经常会有技能 / 物品效果为「增加 xx% 的暴击率,每次未暴击再额外增加 xx% 的暴击率」,以前一直没想清楚这种情况下实际暴击率应该怎样计算。昨晚看到知乎上一个提问,睡觉前想了想总算搞明白了 (´ω`;)。

以该提问中某回答举的剑圣为例:基础暴击率为 x,每次未暴击则暴击率增加 x(也可以是不同的值 y)。由于暴击率的上限是 100%(1),所以连续 ROUNDUP(1/x) 次攻击必然会暴击。令 n = ROUNDUP(1/x)。

(若增加值为 y,则改为 n = ROUNDUP((1-x+y)/y))

现在我们以每次暴击为结尾来切分一个充分多次的攻击序列,则仅会得到 第1次时暴击, 第2次时暴击, … 第n-1次时暴击, 第n次时暴击 这 n 种事件。用 0 和 1 来表示非暴击和暴击的话就是 1, 0 1, 0 0 1, … n-1个0 1, n个0 1

第 1 种事件的概率为 x;第 2 种事件在第 1 种事件未发生(概率 1-x)后的条件概率为 2x,故其联合概率为 (1-x)*2x;第 3 种事件在第 2 种事件未发生(概率 (1-x)-(1-x)*2x = (1-x)(1-2x))后的条件概率为 3x,故其联合概率为 (1-x)(1-2x)*3x。以此类推,第 n-1 项的概率为 (1-x)…(1-(n-2)x)*(n-1)x;第 n 项的概率为 (1-x)…(1-(n-1)x)*1(最后一项是乘以 1 而不是 nx,因为 nx >= 1)。我们分别用P1, P2, … Pn 来表示这些概率。

(若增加值为 y,则 P2 = (1-x)*(x+y);P3 = (1-x)(1-(x+y))*(x+2y);P4 = (1-x)(1-(x+y))(1-(x+2y))*(x+3y);…… P(n-1) = (1-x)(1-(x+y))…(1-(x+(n-3)y))*(x+(n-2)y);Pn = (1-x)(1-(x+y))…(1-(x+(n-2)y))*1

假设充分多次攻击后,我们的暴击次数是 C,则总攻击次数为 C(1*P1+2*P2+…+n*Pn)

实际暴击概率即为 1/(1*P1+2*P2+…+n*Pn) = 1/Σ(i=1,n)i*Pi

看起来很麻烦,不过做成 Excel 表格的话就很直观了……