本文来自NGA炉石传说,作者:UbpaX
零. 前言之前的一篇文章:[[无限火球法]模型下的最优卡组(11/10 更新)(已低保,胜率61%)]篇幅较长,所建模型比较适合刻画面对宇宙牧青玉德等偏中慢速的卡组,为了构建一个适合刻画应对快攻卡组的模型,我考虑了关于费用,苟活牌的价值,随机额外法术的概率等因素,内容变化很大,因此我选择另开一个帖子。
ps:如果大家没了解过之前文章的内容且感兴趣的话,十分推荐先去阅读,这将很可能有助于理解这篇文章的内容。
一. 模型OoO 卡组 deck:30张卡,每张卡仅由两个属性所决定(类别,费用),只有部分牌(即在计算 finalIdx 时需要考虑的牌)考虑费用
OoO 牌库 library:卡组的一个样本实例,顺序随机,当模拟生成牌库后,卡牌的相对次序仅在打出秘法学家的时候可能发生改变(将下一张牌与剩余牌库里的一张奥秘位置调换,从而将检索视为抽牌的特殊情况)
OoO 额外法术:除宝典外套牌之外的法术(或者随从),如魔典,雕文,共鸣,鬼隐巫师等
OoO 固定额外法术:从费用角度上看稳定性较强的额外法术,如雕文,共鸣,鬼隐巫师等
OoO 随机额外法术:从费用角度上看稳定性较弱的额外法术,如宝典,魔典等
OoO 条件1:至少1个巫师学徒,1个大法师,模拟幻影熔岩镜像和另一个巫师学徒总数不少于 3
OoO 条件2: ( 1个宝典和至少3个额外法术) 或 2个宝典 首先产生一个随机数(范围0-1) randNum
要求概率 P(随机额外法术能给到ok的法术数量 >= 6 - 固定额外法术数量)>= randNum,相关概率的计算思路可以参考前文关于宝典概率的计算,这里不再详细赘述
OoO 最后一个key牌的位置 lastKeyIdx:能满足条件 1 和条件 2的牌库的前 n 张牌,n 中的最小值为 lastKeyIdx
OoO 过牌:能让你从牌库抽牌的各种机制。
1. 简单的抽牌:大哥,奥数智慧,工程师学徒等
2. 滤牌:秘法学家,如果剩余牌库还有奥秘,则打出秘法学家时能从剩余牌库中随机抽取一张奥秘
2. 苟活牌:苟活牌实际上并不抽牌,但苟活的一回合能让你多抽一张牌,如冰箱,冰环,暴风雪,末日等
3. 任务奖励:做完任务的一回合能抽 1 张牌
4. 硬抗:30点血量能换来的回合数,只考虑前期,后期情况一律认为无法硬抗,默认是前期是前 4 回合,即前1-4回合可以不依赖任何苟活牌活下去
5. 起手:先手3张后手4张,平均 3.5 张
OoO 苟活牌
1. 1级苟活牌:冰箱
2. 2级苟活牌:冰环暴风雪
3. 3级苟活牌:末日冰锥冰甲等
OoO最优过牌:在当前剩余费用下,考虑当前手牌,按费用最大化利用的策略进行过牌,并对新过到的牌(因为可能费用没有用完)继续执行过牌计算,直到无法过牌为止
OoO阶段及其转移规则:
1. 初期(1-4回合):第一回合默认挂任务,第2-4回合直接最优过牌,第1-3回合停留在阶段1,第4回合的结束时进入阶段2
2. 预冰1:若手牌里有3级苟活牌则打出,然后进行最优过牌,并在回合结束时进入阶段3;否则直接进入阶段4
3. 预冰2:若手牌里有3级苟活牌则打出,然后进行最优过牌,并在回合结束时进入阶段4;否则直接进入阶段4
4. 冰系控场:若手牌里有2级苟活牌则打出,然后进行最优过牌,停留在阶段4;否则直接进入阶段5
5. 冰箱苟活:若手牌里有冰箱则打出,然后进行最优过牌,停留在阶段5;若手里有秘法学家且牌库里有冰箱且打出秘法学家检索到冰箱,则打出冰箱,然后进行最优过牌,停留在阶段5;否则进行最优过牌,然后进入阶段6
6. 极限:记摸到的牌数 1(任务奖励)为 finalIdx
相应的阶段转移图如下
OoO 胜率:若 finalIdx >= lastkeyIdx,则胜率 = 100%,否则胜率 = e ^ ( ( lastKeyIdx - finalIdx ) / 2 ),具体曲线如下
OoO 根据经验至少得含有的牌(共25张)
二. 模拟!!!胜率越接近实际说明模型越能反应实际情况,胜率越高说明在相对意义下在此模型内卡组越好!!!
用数字代表卡牌类型
0:任务
1:巫师学徒
2:熔岩镜像
3:模拟幻影
4:固定额外法术,如雕文,鬼隐巫师等
5:秘法宝典
6:大法师
7:稳定过2张牌的牌,即大哥,奥术智慧
8:稳定过1张牌的牌,如工程师学徒,血法师,战利品等
9:秘法学家
10:2级苟活牌,即冰环,暴风雪
11:3级苟活牌,如末日,冰锥,冰甲等
12:1级苟活牌,即冰箱
13:随机额外法术,如呓语魔典,秘法宝典等
模拟过程如下
1. 卡组就表示为 2x30 的矩阵,如
0 0
1 0
1 0
2 0
2 0
3 0
4 0
5 0
5 0
5 0
6 0
6 0
7 3
7 3
7 3
7 3
8 2
8 2
8 2
8 2
8 2
8 4
9 2
10 3
10 3
10 6
10 6
11 2
12 3
12 3
(该卡组示例不含有随机额外法术)
矩阵元素( i, j )代表卡牌类型为 i,费用为 j
2. 牌库也表示为 2x30 的矩阵,与卡组这个概念的区别主要体现于行的顺序随机
3. 生成一个随机数(用于条件 2 的判定)
3. 从牌库以及 3 中的随机数可以计算得到 lastKeyIdx(新的条件 2 考虑了宝典等随机额外法术的概率问题)
4. 从牌库可以计算得到 finalIdx,具体过程为起手摸牌,进入阶段一,按阶段转移规则直至极限
5. 依据 lastKeyIdx 和 finalIdx 计算得到胜率
6. 重复2-5步骤,可计算出模拟的平均胜率
三. 实验结果与分析为了表述方便,卡组表示为一个有 13个元素的数组,如[ 2 2 1 1 3 2 4 6 1 4 1 2 0 ],第 i 个元素的值表示该类卡牌的张数,具体的费用信息隐藏
根据经验,各元素的最小值为[2, 2, 1, 1, 2, 2, 4, 2, 1, 3, 2, 2, 0]
以下各实验的模拟次数均为 8192 次
1. 低保卡组
卡组:[2, 2, 1, 1, 2, 2, 4, 4, 1, 4, 3, 2, 1]
相对最小值:[0, 0, 0, 0, 1, 0, 0, 2, 0, 1, 1, 0, 0]
胜率:45.9%
分析:数值符合预期,能体现出应对快攻的劣势,说明模型具有一定的合理性
2. 魔典换鬼隐巫师(随机额外法术换固定额外法术)
卡组:[2, 2, 1, 1, 3, 2, 4, 4, 1, 4, 3, 2, 0]
相对最小值:[0, 0, 0, 0, 1, 0, 0, 2, 0, 1, 1, 0, 0]
胜率:46.9%
分析:胜率相比实验 1 略微提高,说明固定额外法术的期望表现要好于随机额外法术
3. 相对实验2,冰锥换过牌(2费)
卡组:[2, 2, 1, 1, 3, 2, 4, 5, 1, 4, 2, 2, 0]
相对最小值:[0, 0, 0, 0, 1, 0, 0, 3, 0, 1, 0, 0, 0]
胜率:52.9%
分析:模型中在阶段2和阶段3已经去模拟了3级苟活牌的作用,但在有2张3级苟活牌的情况下,2费过牌带来的受益还是显著高于3级苟活过牌的。换句话说,3 张 3 级苟活牌相对意义上说是过剩的。
4. 相对实验3,末日换过牌(共 1 张 4 费的 424)
卡组:[2, 2, 1, 1, 3, 2, 4, 6, 1, 4, 1, 2, 0]
相对最小值:[0, 0, 0, 0, 1, 0, 0, 4, 0, 1,-1, 0, 0]
胜率:50.5%
分析:再一次将 3 级苟活牌换成低劣的4费过牌,胜率相对实验3下降了,说明在仅有 1 张3级苟活牌的情况下,4费过牌带来的受益显著低于3级苟活过牌的。换句话说,1张 3 级苟活牌相对意义上说是过少的。从实验 3 和 4 来看,3级苟活过牌带2张是比较合理的,可以 2 末日,也可能可以 1 末日 1 冰锥
5. 相对实验3,鬼隐巫师换过牌(共 1 张 4 费的 424)
卡组:[2, 2, 1, 1, 2, 2, 4, 6, 1, 4, 2, 2, 0]
相对最小值:[0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0, 0, 0]
胜率:54.7%
分析:模型中已经考虑了过牌的费用问题,但即便如此,将 1 张固定额外法术换成 1 张较低劣的4费过牌还是带来了胜率的略微提升,但幅度并不明显,说明放弃额外法术带来的受益在制约着过牌的受益。
6. 相对实验5,末日换过牌(总共有 2 个 4 费的 424)
卡组:[2, 2, 1, 1, 2, 2, 4, 7, 1, 4, 1, 2, 0]
相对最小值:[0, 0, 0, 0, 0, 0, 0, 5, 0, 1,-1, 0, 0]
胜率:50.0%
分析:从实验 5 可以推出过牌收益可能还没达到极限,因此尝试将一张末日换成 4 费过牌。终于,我们看到了卡组胜率的下降,说明一方面过牌带来的收益更小了,另一方面这也影响了苟活能力。看来无脑过牌是不可取的,但带 1 张 424 是不错的选择。
四. 总结1. 新的模型更好地刻画了面对快攻卡组时的实际情况
2. 过牌带来的受益并不是一直显著的
3. 1 张 424 能继续压榨过牌的收益,2 张 424 就已经超出了过牌的负荷
4. 2 张 3 级苟活过牌是一个合理的选择
5. 固定额外法术的期望表现好于随机额外法术
6. 1 张额外法术换成低劣的 4费过牌 依旧存在收益
五. 模型下最优卡组依据实验 5 对卡组进行构筑(2末日可能可以考虑换成末日 冰锥)
卡组代码:AAECAf0EBrQC7QW4CMHBAtDBArnRAgyKAcAB wGcAskDqwTLBOYE AeSrAKYxALaxQIA
六. 后话如果有什么觉得不合理的地方或者有更好的建议,希望大家能和我讨论一下