全站通知:

夜兰极限预期伤害计算

阅读

    

2022-06-03更新

    

最新编辑:梦魇丶迷

阅读:

  

更新日期:2022-06-03

  

最新编辑:梦魇丶迷

来自原神WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
页面贡献者 :
梦魇丶迷

如果是第一次来,按"Ctrl+D"可以收藏随时查看更新~觉得WIKI好玩的话,请推荐给朋友哦~(◕ω<)☆
按右上角“WIKI功能→编辑”即可修改页面内容,新建相应的图鉴页请点击 创建图鉴.png
,请注意时效性
本文章为梦魇丶迷原创,未经作者允许,请勿擅自修改,转载请注明出处并附带链接。


引用内容与须知

圣遗物属性&强化夜兰属性预期伤害计算公式
1.预期伤害计算公式不计入怪物属性,第一部分不计入武器提供的元素伤害加成,生命加成,暴击爆伤加成等属性
2.本次计算均采用角色90级,技能10级的数据
3.本次计算的预期伤害将是夜兰q技能的助战伤害
4.本次计算屏蔽夜兰天赋“猜先有方”的生命值上限加成

数据部分

夜兰属性

生命上限:14450
暴击率:19.2% + 5%
爆伤:50%
10级大招渊图玲珑骰助战伤害:8.77%生命值上限*3

PS:
1.角色在1级,无装备,无圣遗物时就自带5%的初始暴击率
2.角色自带50%基础爆伤

圣遗物数据

圣遗物主词条属性

20级生之花:4780血量
20级死之羽:311攻击力
20级时之沙:46.6%生命
20级空之杯:46.6%水伤
20级理之冠:31.1%暴击/62.2%爆伤/46.6%生命

圣遗物副词条属性

最佳圣遗物副词条可选择:暴击爆伤生命,充能,(元素精通补位)
五星副词条的单次最大档数值,应为对应的主属性20级时数值的1/8,以下单次极限成长属性极限成长÷极限成长6次得到
为了方便阅读,这里取三位小数,实际计算将会采用更长的位数以保证精确
暴击:3.883%
爆伤:7.767%
生命:5.833%
充能:6.483%


5星圣遗物在初始4副词条的情况下,最多强化5次,那么单个圣遗物的词条档数可以达到4+5=9次,5件圣遗物一共45次
但是由于主副词条不会重合,在主词条确定的情况下,我们并没有其余4个对伤害有实际加成的副词条选择,所以一套圣遗物的强化档次不可能达到45次
由于本次计算,理之冠的选择有三种,所以副词条将选择除了主词条以外的两个词条+充能+元素精通

以下列出最佳圣遗物套装的副词条选择:
花:百分比生命,暴击,爆伤,充能
羽毛:百分比生命,暴击,爆伤,充能
生命沙:暴击,爆伤,充能,元素精通
水伤杯:百分比生命,暴击,爆伤,充能
头:暴击/爆伤/生命三选二,充能,元素精通

因为充能,元素精通对夜兰单体伤害没有影响,所以不是有效强化,不计入强化词条次数
五件圣遗物的伤害无效词条强化次数为1+1+2+1+2=7次
所以有效词条最大强化次数为45-7=38次

理之冠属性与对应强化词条次数

20级理之冠:31.1%暴击
圣遗物暴击软上限:100 - 31.1 - 19.2 - 5 = 44.7,暴击词条最大3.9%,44.7÷3.8833 = 11.46,向下取整11(最多11次强化)
圣遗物主副词条不重合,在使用暴击头的情况下,暴击词条最多出现概率为 4 * 6 = 24次,超过软上限,故单独限制出现次数为11次

20级理之冠:62.2%爆伤
圣遗物暴击软上限:100 - 19.2 - 5 = 75.8,暴击词条最大3.9%,75.8÷3.8833 = 19.52,向下取整19(最多19次强化)
圣遗物主副词条不重合,在使用爆伤头的情况下,爆伤词条最多出现概率为 4 * 6 = 24次

20级理之冠:46.6%生命
圣遗物暴击软上限:100 - 19.2 - 5 = 75.8,暴击词条最大3.9%,75.8÷3.8833 = 19.52,向下取整19(最多19次强化)
圣遗物主副词条不重合,在使用生命头的情况下,百分比生命词条最多出现概率为 3 * 6 = 18次

计算部分

计算公式概述

期望伤害=总生命×大招伤害倍率×(1-暴击率)×增伤+总生命×大招伤害倍率×暴击率×爆伤×增伤

总生命=基础生命×(1+生命沙主词条+圣遗物副词条生命强化次数×单次强化属性+额外加成+生命头主词条)+生之花主词条
生命沙主词条:46.6%生命值,额外加成为0,生之花主词条4780,生命头主词条46.6%生命

暴击率=基础暴击率+圣遗物副词条暴击强化次数×单次强化属性+额外暴击率(+暴击头主词条)
基础暴击率24.2%,额外暴击率0%,暴击头主词条31.1%暴击率

爆伤=基础爆伤+圣遗物副词条爆伤强化次数×单次强化属性+额外爆伤(+爆伤头主词条)
基础爆伤50%,额外爆伤0,爆伤头主词条62.2%爆伤

增伤= 1+水伤杯主词条+额外增伤
水伤杯主词条46.6%水伤

理之冠主属性为暴击

最大预期伤害:26254
生命值:31021
暴击:0.786
爆伤:2.519

理之冠主属性为爆伤

最大预期伤害:26254
生命值:31021
暴击:0.786
爆伤:2.52

理之冠主属性为生命

最大预期伤害:25988
生命值:35226
暴击:0.669
爆伤:2.364

其余属性

充能:32.42%
元素精通:46.75

计算过程(python代码)

定义属性

BaseHP = 14450 #夜兰基础生命
BaseCrit = 0.192 + 0.05 #基础暴击率(5%基础+19.2%角色属性)
BaseCritDmg = 0.5 #基础爆伤(50%基础)
Q_ratio = 0.0877 * 3 #10级Q技能,助战伤害系数:8.77%生命值*3


Flow_Main = 4780 #20级生之花:4780血量
Fea_Main = 311 #20级死之羽:311攻击力
Sand_Main = 0.466 #20级时之沙:46.6%生命
Cup_Main = 0.466 #20级空之杯:46.6%水伤

Crown_Crit = 0.311 #20级理之冠:31.1%暴击
#圣遗物暴击软上限:100 - 31.1 - 19.2 - 5 = 44.7,暴击词条最大3.9%,44.7÷3.8833 = 11.46,向下取整11(最多11次强化)
#圣遗物主副词条不重合,在使用暴击头的情况下,暴击词条最多出现概率为 4 * 6 = 24次,超过软上限,故单独限制出现次数为11次

Crown_CritDmg = 0.622 #20级理之冠:62.2%爆伤
#圣遗物暴击软上限:100 - 19.2 - 5 = 75.8,暴击词条最大3.9%,75.8÷3.8833 = 19.52,向下取整19(最多19次强化)
#圣遗物主副词条不重合,在使用爆伤头的情况下,爆伤词条最多出现概率为 4 * 6 = 24次

Crown_HP = 0.466 #20级理之冠:46.6%生命
#圣遗物暴击软上限:100 - 19.2 - 5 = 75.8,暴击词条最大3.9%,75.8÷3.8833 = 19.52,向下取整19(最多19次强化)
#圣遗物主副词条不重合,在使用生命头的情况下,百分比生命词条最多出现概率为 3 * 6 = 18次

MExpDmg = 0 #定义最大期望伤害
ExpDmg = 0 #定义期望伤害
MHP = 0 #定义最大期望伤害时的生命值
MCrit = 0 #定义最大期望伤害时的暴击率
MCritDmg = 0 #定义最大期望伤害时的爆伤

#五星副词条的单次最大档数值,应为对应的主属性20级时数值的1/8。
#最佳圣遗物副词条可选择:暴击,爆伤,生命,充能,(元素精通补位),以下为各项单词最大值
#暴击:3.8833333333%
CritStr = 0.233/6
#爆伤:7.7666666666%
CritDmgStr = 0.466/6
#生命:5.8333333333%
HPStr = 0.35/6
#充能:6.4833333333%

#圣遗物副词条总强化次数:45(计入初始词条)

#最佳圣遗物套装副词条:
#花:百分比生命,暴击,爆伤,充能
#羽毛:百分比生命,暴击,爆伤,充能
#生命沙:暴击,爆伤,充能,元素精通
#水伤杯:百分比生命,暴击,爆伤,充能

#头:暴击/爆伤/生命三选二,充能,元素精通
#所以圣遗物副词条总强化次数:38
Str = 38
#---------------------------------------------------------------------------------------------------

#自定义额外属性加成(武器主副词条,buff加成等)
CusHP = 0.32
CusCrit = 0
CusCritDmg = 0.882
CusAddDmg = 0.75

#单次计算最终面板
HP = 0
Crit = 0
CritDmg = 0
AddDmg = 0

使用“暴击头”情况下的极限属性计算

for tHP in range(4,25):
    for tCrit in range(4,12):
        for tCritDmg in range(5,31):
            if tHP + tCrit + tCritDmg == 38:
                HP = BaseHP*(1 + 0.466 + tHP*HPStr + CusHP) + Flow_Main
                Crit = BaseCrit + Crown_Crit + CritStr*tCrit + CusCrit
                CritDmg = BaseCritDmg + CritDmgStr*tCritDmg + CusCritDmg
                AddDmg = 1 + Cup_Main + CusAddDmg
                ExpDmg = HP*Q_ratio*(1-Crit)*AddDmg + HP*Q_ratio*Crit*CritDmg*AddDmg
                if ExpDmg > MExpDmg:
                    MExpDmg = ExpDmg
                    MHP = HP
                    MCrit = Crit
                    MCritDmg = CritDmg
                    hp1 = tHP
                    crit1 = tCrit
                    crit1dmg1 = tCritDmg
print("最大预期伤害:",end="")
print(MExpDmg)
print("生命值:",end="")
print(MHP)
print("暴击:",end="")
print(MCrit)
print("爆伤:",end="")
print(MCritDmg)

使用“爆伤头”情况下的极限属性计算

for tHP in range(4,25):
    for tCrit in range(5,20):
        for tCritDmg in range(4,25):
            if tHP + tCrit + tCritDmg == 38:
                HP = BaseHP*(1 + 0.466 + tHP*HPStr + CusHP) + Flow_Main
                Crit = BaseCrit + CritStr*tCrit + CusCrit
                CritDmg = BaseCritDmg + Crown_CritDmg + CritDmgStr*tCritDmg + CusCritDmg
                AddDmg = 1 + Cup_Main + CusAddDmg
                ExpDmg = HP*Q_ratio*(1-Crit)*AddDmg + HP*Q_ratio*Crit*CritDmg*AddDmg
                if ExpDmg > MExpDmg:
                    MExpDmg = ExpDmg
                    MHP = HP
                    MCrit = Crit
                    MCritDmg = CritDmg
                    hp1 = tHP
                    crit1 = tCrit
                    crit1dmg1 = tCritDmg
print("最大预期伤害:",end="")
print(MExpDmg)
print("生命值:",end="")
print(MHP)
print("暴击:",end="")
print(MCrit)
print("爆伤:",end="")
print(MCritDmg)

#使用“生命头”情况下的极限属性计算

for tHP in range(3,19):
    for tCrit in range(5,20):
        for tCritDmg in range(5,31):
            if tHP + tCrit + tCritDmg == 38:
                HP = BaseHP*(1 + 0.466 + tHP*HPStr + CusHP + Crown_HP) + Flow_Main
                Crit = BaseCrit + CritStr*tCrit + CusCrit
                CritDmg = BaseCritDmg + CritDmgStr*tCritDmg + CusCritDmg
                AddDmg = 1 + Cup_Main + CusAddDmg
                ExpDmg = HP*Q_ratio*(1-Crit)*AddDmg + HP*Q_ratio*Crit*CritDmg*AddDmg
                if ExpDmg > MExpDmg:
                    MExpDmg = ExpDmg
                    MHP = HP
                    MCrit = Crit
                    MCritDmg = CritDmg
                    hp1 = tHP
                    crit1 = tCrit
                    crit1dmg1 = tCritDmg
print("最大预期伤害:",end="")
print(MExpDmg)
print("生命值:",end="")
print(MHP)
print("暴击:",end="")
print(MCrit)
print("爆伤:",end="")
print(MCritDmg)