如果你看到本段文字,说明该页面未正常加载全局JS,部分功能无法使用,请点击 刷新 重新加载页面。
如果打开页面显示缩略图创建出错,请点击刷新或页面右上WIKI功能中的刷新按钮清除页面缓存并刷新,如果还有问题,请多尝试几次。
全站通知:

技能覆盖率计算公式

阅读

    

2023-03-16更新

    

最新编辑:負けん気な瞳

阅读:

  

更新日期:2023-03-16

  

最新编辑:負けん気な瞳

来自碧蓝航线WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
页面贡献者 :
坐看云起i
尼克妮可妮
爱吃小鱼的仓鼠
智代智代
井号5467
个人认证:bilibili 知名游戏UP主
IJN_Hibiki
負けん気な瞳
怒怒醬
指挥官大人~欢迎来到碧蓝航线WIKI,您可以通过百度搜索“碧蓝航线WIKI 碧蓝海事局”直达本WIKI!如果是第一次来访的话,按“Ctrl+D”可以收藏WIKI随时查看更新哦~如果觉得WIKI好玩的话,记得安利给更多人哟ヾ(o◕∀◕)ノ。
,请注意时效性
本文由 坐看云起i 原创。未经许可,请勿擅自修改,转载请注明出处并附带链接。

使用情况与预设参数

使公式绝对准确的必要条件:触发条件为“开炮/防空炮时”,且开炮间隔固定。

(目前由于卡炮等问题,开火间隔并不固定,这对以下a、b的取值会有很大影响(要取整),因此只能用于计算开火间隔固定的情况。否则就要请出计算机,模拟前排移动和卡炮了。)

其实不止是技能,例如点燃、命中敌人时,甚至受击等等,也可以等效视为某种的开炮时的技能。

只要他满足了触发时机(在内置cd外时)的间隔固定这一最重要的条件即可

其实略微不固定也可,主要是不能使得下述a、b的值取整后变动,从而影响公式

因此需要主炮尽量不卡炮、防空圈内一直有飞机等

若变动较大,则本公式准确性会下降,

但也可以将实战中可能出现的不同的值分别代入,大致估计实际情况波动范围

另外也不太适用于多底座开火的情况,因为不同底座时间间隔较短

但由于正常情况下不同底座开炮时间间隔极短,在计算随时间的覆盖率时,可近似视为两炮同时发射,从而满足使用条件,例如休斯敦(不过目前主要用于单底座驱逐等,此时没有误差)

而其他情况若实在不满足开炮间隔固定,则情况会变得极多,但若cd覆盖的轮数均较短,也可以通过枚举计算之,如布莱默顿,见专栏[1](最后三种情况计算有小错误)


设技能描述为:开炮时,有c概率,使得接下来t2秒内,获得某效果,内置cd为t1,每两轮炮开火间隔(即每轮cd)为T

则设(以下均向下取整,注意每轮cd需加上前后摇)

内置cd/每轮cd+1=[t1/T]+1=a轮,即内置cd覆盖的开炮次数(触发技能的那一炮也算)

持续时间/每轮cd+1=[t2/T]+1=b轮,即技能触发覆盖的开炮次数(触发技能的那一炮也算)

abc即为所需要的所有参数

增伤技能

具体的来说,若此技能只与触发技能对应的炮有关(大部分情况就是主炮增伤)

也就是你只关心开火时这个时间点是否在覆盖之下,则适用此情况

设k为无穷轮覆盖率,即无穷轮后每次开炮时有多少概率在技能覆盖之下

则:

当内置cd≥覆盖cd时,k=bc/(ac-c+1)

当内置cd<覆盖cd时,k=1-(1-ac/(ac-c+1))*(1-c)^(b-a)

若触发当前轮无法被覆盖到,则将b的值计算时不+1即可

对内置cd≥覆盖cd时的简单不严谨证明:设有N次可判定触发的机会,那么(1-c)N次不触发,cN次触发,而触发一次会有额外(a-1)炮无法触发,所以一共打了(a-1)cN+N=(ac-c+1)N次炮,平均触发率为cN/(ac-c+1)N,而触发一次就覆盖b轮,因此覆盖率为k=bc/(ac-c+1)

证明过程展开/折叠

证明:设第i轮炮时触发技能的概率为xi

首先我们设a,b≥3,在n较小时寻找规律

则x1=c,x2=c(1-x1)

注意到x1和x2不可能同时发生,即概率独立

因此x3=c(1-x1-x2),而非c(1-x1)(1-x2)

同理立得第a轮炮触发必须前(a-1)轮不触发且该轮触发

任何情况下的递推式为x1=c

xn=c(1-xn-1-xn-2-…-xn-a+1)(n-i均为角标,当i≤0时xi=0)


设发射第i轮炮时正在技能覆盖范围内的概率为ki,则(注意到本轮触发时本轮也可被覆盖)

当b≤a时,

本轮被覆盖当且仅当前b轮中触发一轮,且前几轮概率独立,不可能触发一轮以上

(或者理解成xn的概率不只是概率触发,而是蕴含着必须前(a-1)轮不触发)

因此kn=xn+xn-1+xn-2+…+x(n-b+1)(n-i均为角标,当i≤0时xi=0)


当b>a时,

本轮不被覆盖当且仅当前b轮都不触发,

而这b轮中的前a轮同时不触发的概率为1-∑xi,∑xi为这a轮对应概率之和,因为概率独立

而在概率为(1-∑xi),即前a轮都不触发的情况下,这b轮中的第a+1轮触发概率就是c

同理,在概率为(1-∑xi)(1-c),即前a+1轮都不触发的情况下,第a+2轮的触发概率也就是c

综上1-kn=(1-c)^n(当n≤b-a时)

1-kn=[1-x(n-b+1)-x(n-b+2)-x(n-b+3)-…-x(n-b+a)](1-c)^(b-a)(当n≥b-a时)①

若b轮不包括本轮(即触发当轮不享受buff),则把所有x的角标-1即可


(本段为验证)事实上,易知n≤a时kn都应等于(1-c)^n,下验证此是否与①吻合

易验证x1=c,x2=c(1-c),1-x1-x2=(1-c)^2,符合公式①

易用数学归纳法证明,当n≤a时

x1+x2+…+xn=1-[(1-c)^(n-1)-c(1-c)^(n-1)]=1-(1-c)^n,

xn= c(1-xn-1-xn-2-…-xn-a)=c(1-x1-x2-…-xn-1)=c(1-c)^(n-1)

因此与①吻合


综上我们就得出了任何轮次下的触发概率{xn}和被覆盖概率{kn},如果只想知道某一轮或者前几轮的覆盖概率,直接在{kn}中取用或取前n项平均即可。注意如果是防空炮类间隔式的,需要间隔时间大于内置cd才能用前n轮的算法,否则后面不等于重新开始。

而无穷轮后即递推式中所有的k和x都相等(收敛性证明略),则:

x/c=1-(a-1)x,解得x=c/(ac-c+1)

k=bx(b≤a时)

k=1-(1-ax)*(1-c)^(b-a)(b≥a时)

即得公式

例:内置cd>覆盖cd的例子:

连续飞机海下(防空炮不间断开火),速射金坷垃(防空炮开火间隔在1.33s以内)覆盖率55.26%,正常慢速金坷垃覆盖率51.43%

连续飞机海下,技能【防空模式】正常覆盖率3/7=42.86%,超速射(防空炮开火间隔在1.25s以内)覆盖率37.5%

内置cd<覆盖cd的例子:

计8s5轮炮,5s3轮炮(金凯旋射速1.7-1.8s) ,御三家技能覆盖率为22.06%

拉菲装填提升后射速1.3s,计8s7轮炮,5s4轮炮,则覆盖率为29.17%

若使用紫双联120等方法使射速进1.6s,8s6轮炮,5s4轮炮,则覆盖率为25.45%

其他技能

具体的来说,若此技能与触发技能的炮无关(大部分情况就是增肉技能,但一些主炮触发鱼雷,防空炮触发主炮等,若只关心时间上的覆盖率,不要求精确计算发射时是否卡在时间内,也可使用此情况估计)

也就是你关心的是所有时间段下的平均覆盖情况,则适用此情况

设K为此时无穷轮覆盖率,即无穷轮后在技能覆盖之下的时间占总时长的比例


另外设B=t2/T=持续时间/每轮cd,(不取整+1)

b-B=β

则:

当内置cd≥覆盖cd时,K=Bc/(ac-c+1),

当内置cd<覆盖cd时,K=1-[1-(a-β)c/(ac-c+1)]*(1-c)^(b-a)


对内置cd≥覆盖cd时的简单不严谨证明(同上):设有N次可判定触发的机会,那么(1-c)N次不触发,cN次触发,而触发一次会有额外(a-1)炮无法触发,所以一共打了(a-1)cN+N=(ac-c+1)N次炮,平均触发率为cN/(ac-c+1)N,而触发一次就覆盖B时间,因此覆盖率为k=Bc/(ac-c+1)

证明过程展开/折叠

证明:设B=持续时间(t)/每轮cd,b-B=β

之前的{kn}实际为某一炮发射时在覆盖期间的概率,

而此时只有两种情况,一种是直到下一炮开火都一直在覆盖时间内(下记两炮之间的“时间段”为“一轮”,炮为时间点)

一种是覆盖此轮的前(1-β)轮就停止,后β轮未被覆盖到

设qn为第n炮和n+1炮之间,只被部分覆盖到(即比整轮少覆盖β轮)的概率

设所求第n炮到n+1炮之间这段时间的平均覆盖率为Kn

则Kn=kn-βqn


而本轮被部分覆盖当且仅当之前第b炮触发,后面全不触发,

类似之前kn的所求过程,当b≤a时,qn=x(n-b+1)

Kn=kn-βqn=xn+x(n-1)+x(n-2)+…+x(n-b+2)+(1-β)x(n-b+1)

无穷轮后K=(b-β)x=Bx

事实上,此时每次触发技能后均覆盖B轮满收益,

因此无穷轮的平均收益仍为k=Bx,只是将b换成B而已。


当b>a时,类似得qn=x(n-b+1)(1-c)^(b-a)(仅n≥b-a时,否则qn=0)

因此Kn=1-(1-c)^n(当n<b-a时)

Kn=1-[1-(1-β)x(n-b+1)-x(n-b+2)-x(n-b+3)-…-x(n-b+a)](1-c)^(b-a)(当n≥b-a时)

无穷轮后K=1-(1-ax+βx)*(1-c)^(b-a)


另外,也可求设任一时间点的被覆盖概率

仍设其为kn(n可取任意实数,n=此时时间/每轮时间+1,即第一轮开炮记为时间轴上点0,和k1)

与之前同理,kn时刻被覆盖当且仅当前B轮时间内至少触发一轮

因此当b≤a时,

kn=x[n]+x[n-1]+x[n-2]+…+x[n-B](除最后一个为向上取整外,[]均为向下取整。当i≤0时xi=0)

当b>a时,

1-kn=(1-c)^n(当n<b-a时)

1-kn=(1-x[n-B]-x[n-B+1]-x[n-B+2]-…-x[n-B+a-1])(1-c)^([n]-[n-B+a-1])(当n≥b-a时,注意除[n]为向下取整外,其他[]均为向上取整)

例:内置cd>覆盖cd的例子:

无限飞机海下,1.5s防空圈射速时,防空模式对炮击的debuff影响覆盖率为2/7=28.57%,1.25射速时为30%,远小于对防空炮的覆盖率,因为触发时也能覆盖到

内置cd<覆盖cd的例子:

绫波主炮0.82s时,覆盖率50.6%

休斯敦若近似视为每两轮底座合计36%触发率,则使用路易炮射速5.33s时,覆盖率66.7%;使用罗恩炮射速7.09s时,覆盖率54.9%

总结

虽然此方法计算的是无穷轮的情况,但证明部分主要算的是有限轮内容,可以算出整个时间轴上每个点的触发率和覆盖率,并不是只能算无穷轮,只不过有限轮时情况繁多,只能展示无穷轮的平均值

实际有限轮的大致情况是,第一轮被覆盖到的概率只有c,第二轮1-(1-c)^2,之后覆盖率会上下波动着迅速增加,迅速逼近求得的k/K,但有限轮的总轮数小于技能每次覆盖轮数b时,一定会离k有很大距离,此时建议用证明中有限轮前期覆盖率来取值计算,例如防空炮只有3轮时,金坷垃覆盖率从51.4%下降至27.1%(未考虑覆盖到下一波飞机的情况);而防空模式因为其对应的b=3,因此覆盖率从42.9%变为42.2%,但仍不是超过。因此k大致可以视为覆盖率的最大值(c<k),且在轮数较多时容易逼近

覆盖率.png


可用文章先锋舰队投射量与破盾效率最下方的代码模拟验证(本文是以纯数学方法求得)