分享

【干货】万智牌中应该4+0还是3+1?

 老汉MTG 2022-10-31 发布于湖北

大家好,这里是花市灯如昼。当我们微调构筑时,时常会面临一个选择:

是4+0还是3+1(当然也可能2+2)?

本文致力于对这个问题进行部分的解答。【探索未然】3.加油啊,不放满一组的大哥哥 中对这一问题有描述,并且给出了自己的结论:我们应该对更主流的卡组来针对,尤其是当主流在meta中超过50%时,4+0总是优于3+1的。

然而事实真是如此吗?3+1是人们空穴来风、无法依赖的错觉吗?本文将对这个问题进行审视,并且给出3+1配置直觉产生的依据。

如果我们选择3+1,会有何种好处?从套牌自身出发,可能是该卡片没有好到让我们满编4;也可能该卡片虽然好,但是受到传奇规则或该卡片在对局中的定位,复数上手导致价值显著降低,甚至手牌-1,因而不愿满编。

而某些1的卡片,我们期望在某些对局中发挥不错的作用,或者和3的卡片同时上手时,增加对策多样性,如果这张卡片在一般的对局中价值也没有太差就更好了。——这些都是从套牌内部出发的考虑,下文不再赘述,转而专心研究在针对meta时的配置方法。

案例分析

为了深入浅出地分析该问题,笔者设置了一系列递进的例子,来帮助读者从直觉和数学上来理解(由于数学推导较为繁琐,正文中部分内容将直接引用结论,推导和证明过程移至文末,以飨欲剖析数理的读者)。

Case 1

对手抛一枚硬币,其为正面的概率为 m1,负面为 m2,不妨设 m1≥m2,且 m1+m2=1。而你有一堆卡牌,其中每张卡为正面的概率为 x1,负面概率为 x2,且 x1+x2=1(这和实际不同。如30地套牌,抓1张是地的概率为30/60,第二张是地的概率则是29/59或30/59,取决于第1张是否是地;但在 case 中,则始终是1/2的概率)。

你只抓1张牌,如果卡牌结果包含硬币结果即获胜。问:我们应该怎样设置 x1 和 x2 ,以最大化获胜期望?

答:因为我们只抓1张卡牌,所以我们的获胜期望 E=m1*x1+m2*x2=m1*x1+m2*(1-x1)=m2+(m1-m2)x1。由于 m1≥m2,则这是一个关于 x1 的单调递增函数,x1=1 时取得最大值,此时 x2=0,E=m1。

分析:该 case 的一个直观理解为,对手抛硬币70%的概率为正,30%为负,而我们只能猜一次正负。我们的最佳策略是100%猜正。即使正的概率为51%——只要大于50%,我们的最佳策略始终是猜正面——很好理解,对吧?上文引用的文章的数学依据其实正是这样。

启示:当你只有1张牌时,你最佳的选择就是 all in 主流。

Case 2

在 case 1 的基础上,我们这次抓2张牌,只要卡牌中包含硬币结果即可。问:我们应该怎样设置 x1 和 x2,以最大化获胜期望?

答:抓2张牌,当为正面时,我们不全是负面即可,这种概率为 m1*(1-x2^2);负面时同理。则我们的获胜期望是 E=m1*(1-x2^2)+m2*(1-x1^2)=1-(m1*x2^2+m2*x1^2)=1-m1*m2-(x1-m1)^2。这是一个关于 x1 的一元二次函数,x1≤m1 时单调递增,x1≥m1 时单调递减。故 x1=m1,x2=m2 时获胜期望取到最大值。

分析:和 case 1 的结果不同,case 2 中的 x1 和 x2 按照 m1:m2 的比例分配。这意味着,如果硬币70%概率为正,而我们只能抓2张牌时,我们应该在牌库中放70%的正面牌,30%的负面牌。

这似乎就是最符合我们直觉的想法!meta 中两种套牌有多少分布,我就投入对应数量的针对牌!但,冷静!冷静!冷静!我们要注意该 case 的假设条件:套牌中全为针对牌,而我们可以抓2张牌。这和实际情况完全是不同的。

那为什么这种情况下,就不再是 all in 主流了呢?因为只需要包含硬币结果即可,那么复数张上手无意义(可稍微类比为边际效益降低)。如果我们依然选择全部猜正面,胜率只有70%,那么两张卡牌都必然猜正面,是一种浪费。

若我们70%猜正面,当是正面时,我们有 1-30%*30%=91% 的概率猜对;负面时,我们有 1-70%*70%=51% 的概率猜对。此时获胜期望为 91%*70%+51%*30%=79%

相当于我们用9%猜错70%概率的情况的代价,换来了51%猜对30%的概率,这是很划算的,同时这也是数学计算下的最优解。

启示:3+的配置是有道理的,人们的直觉在某些情况下是合理的。但问题在于,我们需要谨慎地确定“某些情况”究竟是何种情况。

Case 3

在 case 2 的基础上,我们这次不抓2张牌,转而抓n张牌,问:我们应该怎样设置 x1 和 x2,以最大化获胜期望?

答:分析方法同 case 2,最优策略如下。

分析:可以看到,x1 和 x2 的数值,是按照 m1 和 m2 的开 n-1 次方来分配的。case 2 中按照 m1 和 m2 分配是 case 3 中 n=2 的一个特例。当 n 变得很大时,x1=x2=50%。

应该作何理解?牌数增多,我们的牌中几乎总能包含正面,因而需要匀出来一些概率去“照顾”负面,最终最优策略就是50%对50%。

以硬币70%正面为例,最优策略和获胜期望如下表。

当抓五张牌时,我们猜测正面的概率只有55%,但获胜期望高达97%。这其中,有93%的概率,牌中有正有负,必胜;有4%概率,全正或全负,也依然猜对;只有剩下3%的情况牌中不包含硬币结果,输了。97%的胜率,已经远远高于70%这种all in的策略了。

启示:当抓牌数增加时,你应该增多对次主流的关心。

Case 4

在case 3的基础上,我们令 x1+x2=μ<1(毕竟针对卡位只占一部分或者一小部分),此时令 x3=1-μ。即,卡牌有 μ 的概率,不为正或负,是对胜负无作用的牌。问:在给定的 μ 下,我们应该怎样设置 x1 和 x2,以最大化获胜期望?

答:分析方法同 case 3,最优策略如下(请注意!你不需要理解这个公式!下文中会有简化版本)。注意到,就是在 case 2 的结果上,各自增加了一个负的偏移量。

这种情况下,应有 0≤x2≤x1≤μ,所以约束如下(也不需要理解)。约束满足则按照上式分配,不满足则全部分配给 x1,即:x1=μ,x2=0。

分析:case 4 的结果,说明了分配情况和调整卡位数量有关。当调整卡位很少时,近似退化为 case 1 中 all in 的情况;调整卡位合适时,近似退化为 case 3 中分散分配的情况。

启示:似乎存在一个界限,当调整卡位低于该界限时,应该 all in 主流。

Case 5

Case 4 已经完成了主题探讨的模型要求,但其过于复杂,因而笔者在本 case 中对其进行近似。我们定义牌库中的牌为 m(万智牌中即为60),在一个对局中考虑前 n 张牌(本文中取12,即进行到自己的第五回合时抓到的牌数)。

将 case 4 中的约束条件恰好满足时的解近似为 zero-cards 如下。注意看,这个公式叫作小零,自然对数的装饰让他睿智灵秀,简单的分子式在他的身上却添了朴素的妖娆。咳咳……这个公式仅需要计算一个对数,常见的有 ln(6/4)≈0.40,ln(7/3)≈0.85,ln(8/2)≈1.40,记住这3个近似应该即可满足大部分需求,如果嫌弃计算对数麻烦。

这是本文中最重要的一个参数!他代表了当调整卡位为 zero-cards 时,完全不需要考虑投入针对次主流的卡。如当环境中70%的主流时,zero-cards=4.24。这意味着当只有4个调整卡位时,应该选择4+0。

我们得到了这个临界值,那如果可调整卡位高于这个数值,我们应该怎么计算?我们依然可以近似处理,方案是:将多出的所有卡位平均分配!哇哦,笔者认为这种分配方法真的很cool!

举例来说,当有8个针对卡位时,那么多出来的3.76卡位平均分配,次主流得到1.88张,其余则分配给主流。也即 x1=6.12,x2=1.88。四舍五入则有 x1=6,x2=2——这便是我们的最优分配。

启示:计算出 zero-cards,则我们可以为所欲为!

Case 6

现在提出我们的万智牌问题。套牌为 m 张牌,我们研究套牌中的前 n 张牌,其中关注的卡位数为 k(即如何分配k到两种针对卡上)。

以上模型中,我们假设了每张卡牌是独立同分布。但万智牌中,每张牌之间会互相影响。以60套牌30张地的情况来说,抓7张牌,没有咒语的概率为0.53%(利用组合数进行计算,等于 C(30,7)/C(60,7),该解为精确解,下文计算同理,不再展示计算过程),而利用上述模型,计算结果为0.78,误差较大;但如果只考虑抓2张牌,则没地的理论值为24.58%,模型计算为25%,几乎一致;或者我们考虑关注的咒语只有4张,抓7张手牌,没有关注咒语的概率为60.05%,模型计算为61.70%,误差也依然很小。

而对于卡位的分配计算,则会令误差进一步缩小。譬如 5.1:2.9 和 5.3:2.7,最终都会被解为5+3。笔者在这里没有给出严格的数学证明,但经过诸多测试,在我们考虑的实际应用范围内,误差完全可以接受,上文的模型对于揭示针对卡位配置的定量和定性分析,几乎是很准确的。

启示:All models are wrong, but some are useful(所有模型都是错的,但有些是有用的).

引文内容探讨


这部分我将对所引文章内容进行讨论。文中有一句话我深以为然:“在一定程度上,这个结论有些反直觉,不是么?不过,数学可不会骗人”。诚然,反直觉的结论往往更有启发性,而正确的数学推导也不会骗人,但对于数学的解释却可能有欺诈性。

文中将60抓15简单地处理为4抓1,这是个极其严重的trick。如果读者顺利阅读了该文,可以意识到,4抓1本质上是 case 1 的情况,而60抓15更接近 case 4 的情况(case 3 也可以近似理解)。

对手抛硬币,70%概率为正,现在你可以猜一次,请问你猜什么?——当然100%猜正。这个事情反直觉吗?并不。因为我们解释清楚了问题。而60抓15和4抓1的差别,就像你接了个1地后手,你能在第二回合下第二块地的概率是多少(假设牌库有一半是地)?如果按照期望,那我2块地中必然有1块地。但事实上,你只有1-0.5*0.5=0.75的概率能下第二块地。

文章选择前15张牌来分析,只是因为恰好60/4=15。当调整卡位变为5或6时,如果按照其分析思路,转而分析前12或10张牌,分析结果依然是你应该 all in。4抓1只有1张牌,但60抓15除了抓到0和1之外,还可能抓到2或以上针对牌。文章正是完全忽略了这些情况,才得到了片面的结论。

即使按照文章的思路,我们仍然可以诘问:当环境比例为50%:50%时,根据对称性,2+2至少不会坏于(甚至优于)4+0。那么当环境变为50.01%:49.99%时,我们就应该毫不迟疑地将2+2变化为4+0吗(甚至其中都没有3+1的过渡)? 

当结论反直觉时,我们首先要小心地检查我们的结论,是否模型出现了谬误,是否我们对结论的解释出现了偏差。数学不会欺人,但人会自欺。甚至还会用错误的结论,去否定那些也许正确的做法。

本文内容总结

1. 万智牌中,套牌为 m 张牌,考虑抓到 n 张牌。环境中主流和次主流占比分别为 m1 和 m2,我们有 k 张针对卡位时,一个近似分配方法如下(本文最重要的结论!)

① 计算出 zero-cards

② k<zero-cards,则分配结果为 k:0
③ k>zero-cards时,将超出部分平分即可


2. 精确解下当环境套牌为65%:35%,即近似为2:1时,我们应当选择3+1而非4+0。事实上这个比例也可以通过式子反解。我们令 x2=0.5(0.5~1.5都会近似到1,故取下界),得到 m1/m2=1.82,即 m1=64.57%。和理论值几乎一致。

3. 本文仅假设了环境中存在两种套牌。但可以灵活地应用到更加细碎的 meta 中仅考虑针对两套牌时的问题。譬如环境中40%的主流,30%的次主流和15%的次次主流,你针对后两者有四个卡位,并且两种针对卡对40%主流收益一致,则完全可以按照 30%:15%=66%:34% 的情况来探讨。按照上一条结论,应该选择3+1。

4. 本文仅考虑针对 meta 时的卡位分配收益,并且将针对到的收益设置为1,未针对到的收益设置为0(即抓到针对就赢,且针对牌在另一个对局中作用为0)。即使是在这种极端假设下,依然说明了合理分配的重要性。所以3+1甚至2+2,在合适的 meta 中、合适的情况下确实会有一定的优势,但这需要牌手对于 meta 敏锐的观察和自己套牌深刻的理解。

5. 如果考虑到4+0会复数上手,边际效益递减;3+1中的1的收益也没有那么差;即使在非针对性对局中1+1也可能好于2+0的上手等情况,多元化卡牌配置可能更加具有优势。不过也要注意,本文的假设中,暗含了重复上手的牌是完全无价值的。该假设在大部分情况下都是合理的。当然如果针对快攻,抓到复数的杀不是坏事,此时请自行斟酌,模型未予以考虑,不过应该相去不远。在加入自己的理解时,确保你有自信可以从中获益,你在做正确的事情。

6. 需要注意到,本文的结论虽然是针对主牌,但对于备牌也是同样适用的(因为可以等价为将对应备牌都换入,然后考察抓到特定针对牌的情况)。譬如你有4个备牌位置需要针对2个卡组,而这两个卡组的 meta 占比近似为2:1,那么你应该大约采取3+1的策略。

7. 本文除了给出 meta 下针对卡牌分配问题的数学解释和直观理解之外,笔者的主要写作目的就是:如果你对套牌和 meta 都有较深的理解,而你想要微调构筑,那么就去放胆尝试!


附录内容

将将将,欢迎来到推导过程~

Case 3

在 case 2 的基础上,我们这次不抓2张牌,转而抓n张牌,问:我们应该怎样设置 x1 和 x2,以使我们的获胜期望最大?

答:分析方法同 case 2,获胜期望 E =m1*(1-x2^n)+m2*(1-x1^n)=1-(m1*x2^2+m2*x1^2),这是一个关于 x1 的 n 次函数,欲求其最值,需要对其进行求导。导函数 E’=n*(m1*x2^(n-1)-m2*x1^(n-1)),其为关于 x1 的递减函数,则期望函数在导函数为0处取得极值,此时可以解出 x1 和 x2。

Case 4

在 case 3 的基础上,我们令 x1+x2=μ<1(毕竟不可能60张牌全是针对),此时增加 x3=1-μ。即,卡牌有 μ 的概率,不为正或负,是空,对获胜无作用。问:我们应该怎样设置 x1 和 x2,以使我们的获胜期望最大?

答:分析方法同 case 2,获胜期望 E =m1*(1-(1-x1)^n)+m2*(1-(1-x2)^n),这是一个关于 x1 的 n 次函数,不同的是不再有 x1+x2=1,转而有 x1+x2=μ。计算结果如下。注意到,x1 和 μ,x2 和 μ 都是线性关系。这意味着,对于 μ 已经完成的分配,当增加新的 Δμ,x1 和 x2 的分配增加比例为 m2 和 m1 的开 n-1 次方之比,对于 x1 的增幅小于 x2(但 x1 的初始值大于 x2,如果 μ 继续增加到1,就退化为了 case 3 的结果)。

分析:x1+x2=μ,所以相比于 case 3 的结果,x1 和 x2 分别有了一个负的偏移量。有约束 0≤x2≤x1≤μ,我们要考虑极值是否落在定义域内。令 x2≥0,有以下约束。当下式满足时,按照计算结果分配即可;若不满足,函数关于 x1 是单调递增的,此时解取到边界,即 x1=μ,x2=0。

令n趋近于无穷,结果收敛于 x1=x2=μ/2。这和 case 3 中的结果是一致的,牌数增多,则趋近于平分秋色。

我们应该作何理解?case 3 中说明了,抓牌增多,要对次主流多加关心;同时 case 1 中说明了,只能抓到很少的牌(比如1)时,应该 all in 主流。该 case 中,μ 的存在,期望上减少了抓到针对牌(正或负)的数量。如果 μ 很小,我们期望抓到的牌就会很少,反之则可近似为 case 3 中的某些情况。

以硬币70%正面为例,首先计算 x2≥0 的约束。我们考察不同的 n 下的 μ 的最小值。

注意到 n*μ 是趋近于1的,考虑如下极限。将数据代入,70%算例中该极限为0.85。

边界分析:定义 δ 为 x2 的期望下界,考察 x2≥δ 的边界情况,有如下结果。μ 和 δ(即 x2)为线性关系。

万智牌中,一张牌占比为 1/60=0.017,而 λ 的计算和 n 有关,以下例子中我们假定 n=12(即我们关注万智牌到第五回合自然抓到的牌数)。

δ’=1/60,则 δ 代表一张牌,定义给 x2 分配1张时可调整卡牌数为 one-cards。

δ=δ’,计算出 one-cards=6.37这意味着当可调整卡位为6.37时,x2=1,x1=5.37。

另一方面,定义给 x2 分配0张时可调整卡牌数为 zero-cards。即令 δ=0,计算出 zero-cards=4.45。这意味着当可调整卡位为4.45时,x2=0,x1=4.45。

由于 μ 和 δ 为线性关系,则我们根据 one-cards 和 zero-cards 可以计算出所有的 μ 和 δ 的对应值。如 x2=0.5,对应的 μ=(one-cards+zero-cards)/2=5.41。这意味着当 μ 在 5.41~7.33 时,x2 在 0.5~1.5。由于卡牌只有为整数张,采用四舍五入,该区间内令 x2=1。类似地,我们可以将计算结果填入下表。

n=12,m1=70% 的条件下,调整卡位小于 zero-cards=4.45 时,完全不考虑对 x2的分配;而在 zero-cards 的基础上增加新的调整卡位时,x1 和 x2 的增加量按照 1:1.08 分配(可近似为 1:1 分配,即从调整卡位从4.45增加到6.45,近似有 x2=1,x1=5.45)。

渐进分析:n 较大时,开 n-1 次方会快速趋近于1,80%:20% 和 90%:10%的环境,该比值为 1:1.13 和 1:1.22,几乎都可以近似为 1:1。由于可调整卡位并不多,所以初始分配起较多的作用。x2 想要壮大自己,只能寄希望于有更多的卡位,或 m2 没有小 m1 太多。

令套牌中卡牌数为 m,δ’=1/m。n 趋近于无穷时,令 m/n 为定值。我们发现 zero-cards 与 m、n、m1、m2 有关,其中 m1/m2 是表征 meta 分布的一个参数,而 m 在万智牌中即为60,n 是我们的研究抓牌数,本文中取12。zero-cards 是研究分配问题最重要的一个参数, one-cards 也只是在前者上加2。

一个近似的分析流程如下:如果调整卡位低于 zero-cards,那么全部选择主流;每当调整卡位多2个,则分别分配给主流和次主流1个卡位。

算例:以 m=60,n=12,m1:m2=0.7:0.3 为条件。zero-cards=60/12*ln(7/3)=4.24。因而只有4个调整卡位时,应该选择4+0;而当调整卡位增加到8时,将增加的3.76平分,应该选择 6.12:1.88,取整则选择6+2。

Case 6

计算机让我们可以轻易地穷举这些情况。考虑 n=12,k=4 的情况,依然定义抓到针对牌即获胜。不同配置的胜率如下。而模型的计算结果为 x1=4.23,x2=-0.23。由于 x2 为负,故结果修正为 x1=4,x2=0,和精确解一致。

考虑 n=20,k=10 的情况,以进一步考察模型的有效性。不同配置胜率如下(节选)。模型的计算结果为 m1=6.23,m2=3.77,依然十分地准确。我们同时考察我们的近似估算。此时 zero-cards=60/20*ln(7/3)=2.54。将7.46平分,有 x1=6.27,x2=3.73,也十分地准确。

我们甚至考虑 m=1000,n=k=200 的情况,该种情况下,最优配置为 x1=102,x2=98,胜率约等于1。而我们的模型结果为 x1=101.92,x2=98.08。近似估算,zero-cards=1000/200*ln(7/3)=4.24,将195.76平分,得出解为 x1=102.12,x2=97.88,估算的准确性也得到了保证。

以上三个随机算例表明了模型具有相当的准确性。

感谢你的阅读,撒花~

扫码二维码

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多