明日方舟吧 关注:1,886,053贴子:86,840,043
  • 11回复贴,共1

【用数据说话】解析目前的公开招募系统

取消只看楼主收藏回复

其实早在6月10号开始的时候,我就开始收集公招数据来推测公招模型,在这期间各类理论频出,什么先随机干员,养蛊法,保底分,我的确是一路看到现在,虽然现在收集的数据量还不够,但为了停止一些谣言,我打算把现阶段的结论发出来
(另外希望大家脑测的时候能不能有点理由,有些人脑测起来没有数据还没有道理,最气的是你还没时间找到足够的数据反驳他,实在是无能为力PS:帖子被贴吧删的第n次,实在不行NGA走起了


IP属地:广东1楼2019-07-08 19:34回复
    首先,本帖推测和证实的公招机制以4大原则优先:
    1. 代码实现简单 (实现方法能简则简,限制条件能少则少)
    2. 方便维护 (比如说你要加新干员,需要整个代码都重写一边或者把所有数据都改一遍,那就很不方便维护)
    3. 概率可控 (整体出3456星的概率最好是可控的,而且控制起来简单,这样方便日后微调或暗改)
    4. 让服务器压力小 (计算方式让服务器压力小)


    IP属地:广东6楼2019-07-08 19:35
    回复
      2025-08-17 21:21:42
      广告
      不感兴趣
      开通SVIP免广告
      在基于这4个原则的基础上:
      我把公招机制分为3个部分,这3部分相互独立
      1. 选tag阶段:这个阶段由服务器端进行,选好tag发给客户端
      (依据:根据常理这种抽卡类随机过程为了保证安全性都不会交给客户端进行)
      2. 划tag阶段:这个阶段由服务器端进行,但是在你提交勾选的tag表时,tag就已经在服务器端被划好了,同时返回的应该有以下数据,被划的tag,确定不会被划tag的显示时间(就是什么时候在客户端显示确定不会被划的tag,具体表现为tag变暗)
      (这个是猜测,猜测理由:根据第四个原则对服务器端压力小,划tag大概率不会随时间随时更新,那样计算量太大,所以按照常理在提交时被划的tag就已经决定了)
      3. 选干员阶段:这个阶段由服务器端进行,根据被划的tag随机出干员返回给客户端


      IP属地:广东7楼2019-07-08 19:35
      收起回复
        那么这三个阶段具体干了什么?
        先来看最重要的选tag阶段,是玩家机制讨论的重点,也是本帖论证和说明的重点
        先看数据:
        截至2019/7/7共统计690份数据,还有137份数据是用来验证保底分机制和一些细节的所以没有加在统计数据里:

        同时说几个统计现象,估计大部分人也有体感
        1. 组合tag出率不均匀,如重装+输出等组合tag很稀有
        2. tag出率具有伴随现象,具体体现为有时候稀有tag总是扎堆出现,根据统计发现大概60%左右的稀有tag都是跟其它稀有tag一起出现的
        3. 同类tag中有部分tag出率较低,比如说重装干员出率低于狙击干员,大幅低于先锋干员等


        IP属地:广东11楼2019-07-08 19:37
        回复
          那么就可以开始正题了,公招随机tag的机制是什么:
          先说结论,公招随机tag的机制可以分为4点:
          1. 首先在服务器端维护着一个tag组合的全排列表或类似的东西,一共列举了全部tag组合的11w种可能,并把每种可能的保底星级枚举出来(需要计算组合tag)
          2. 进行随机tag之前,会先按照概率选择星级池,具体概率用数据模拟为(由于统计数据不足可能有部分误差):
          3星及以下:85%
          4星:13%
          5星:1.5%
          6星:0.5%
          3. 选择星级池以后,按照服务器端维护的全排列表的保底星级选择tag范围,从中随机出一个tag组
          4. 将tag组中的5个tag打乱顺序,发送给客户端


          IP属地:广东13楼2019-07-08 19:37
          收起回复
            可能大部分人看到这里都感觉我在胡扯,还维护11w份数据?这多费劲呀
            然而实际上则不是,这不仅实现最简单的方式,同时也是最好维护的方式,从茫茫多的公招模型中选择这个是有理由的
            首先,这11w份数据不由人来打表,是由程序跑出来的
            具体流程应该是这样的,首先用一个数据结构存储在公招内的干员数据,写一个程序跑出能锁定干员tag组合,比如说:生存+特种干员,一个保底3星,一个保底4星,组合保底5星(狮蝎)
            这个程序很好实现,代码量不到百行
            下面就是跑出来的结果
            #记录锁定tag,数据记录含义从左到右分别为:| 序号 | Tag | 保底星级/最高星级 |
            #锁定tag定义:由多个tag组成锁定tag,在不被划掉的情况下必定会出比单选其中任何一个tag所获得的星级更高,例如:28 削弱+群攻 5,削弱单选保底4,群攻保底3,组合保底5,即为锁定tag
            1: 医疗干员 支援 5/5——白面鸮 华法琳
            2: 狙击干员 生存 4/4——杰西卡
            3: 狙击干员 群攻 4/5——陨星 白雪
            4: 狙击干员 减速 4/4——白雪
            5: 辅助干员 输出 5/5——真理
            6: 辅助干员 削弱 5/5——初雪
            7: 近卫干员 群攻 4/5——幽灵鲨 艾丝黛尔
            8: 近卫干员 减速 4/4——霜叶
            9: 重装干员 男性干员 4/4——角峰
            10: 重装干员 输出 5/5——雷蛇 火神
            11: 重装干员 生存 5/5——火神
            12: 重装干员 治疗 4/5——临光 古米
            13: 重装干员 位移 5/5——可颂
            14: 先锋干员 支援 5/5——凛冬
            15: 男性干员 近战位 4/4——角峰
            16: 男性干员 防护 4/4——角峰
            17: 远程位 生存 4/4——杰西卡
            18: 远程位 支援 5/5——白面鸮 华法琳
            19: 近战位 群攻 4/5——幽灵鲨 艾丝黛尔
            20: 近战位 治疗 4/5——临光 古米
            21: 近战位 减速 4/5——食铁兽 霜叶
            22: 输出 防护 5/5——雷蛇 火神
            23: 输出 减速 4/5——真理 霜叶
            24: 输出 特种干员 5/5——狮蝎 崖心
            25: 输出 位移 5/5——崖心
            26: 生存 防护 5/5——火神
            27: 生存 群攻 4/5——幽灵鲨 艾丝黛尔
            28: 生存 特种干员 5/5——狮蝎
            29: 防护 治疗 4/5——临光 古米
            30: 防护 位移 5/5——可颂
            31: 群攻 减速 4/4——白雪
            32: 群攻 削弱 5/5——陨星
            33: 治疗 支援 5/5——白面鸮 华法琳
            34: 费用回复 支援 5/5——凛冬
            35: 减速 特种干员 5/5——食铁兽
            36: 减速 位移 5/5——食铁兽
            37: 术师干员 女性干员 输出 4/4——夜烟
            单tag:
            4 削弱 特种干员 支援 位移 快速复活
            5 召唤 控场 爆发 资深干员
            6 高级资深干员


            IP属地:广东15楼2019-07-08 19:37
            收起回复
              有了这个表,就可以判断29个tag中共118755种组合,每种组合能出的保底星级是多少
              下面就是目前公招池内的结果:
              3星:3422份组合
              4星:12636份组合
              5星:82222份组合
              6星:20475 份组合
              而且很好维护,首先公招池内加入,tag的组合数118755是不变的,只需要更新锁定tag的列表即可然后重新跑一边每种组合的保底星级即可,整个维护过程可能连几分钟都不到
              有了这个列表,就可以按照概率开始随机是3星池还是4,5,6星池
              比如说随机到5星池,就从5星池中82222份组合中随机抽取一份发给客户端
              比如说随机到6星池,就从5星池中20475份组合中随机抽取一份发给客户端,其中必有高资,因为只有高资锁6星XD
              这个过程代码不过几十行,可以说是最简的且最快的公招模型了


              IP属地:广东18楼2019-07-08 19:38
              收起回复


                IP属地:广东20楼2019-07-08 19:39
                回复
                  2025-08-17 21:15:42
                  广告
                  不感兴趣
                  开通SVIP免广告
                  接下来就是验证模型的阶段:
                  我自己用这个公招模型写了一个公招模拟器,下面是随机1w次的模拟数据
                  ( 网盘地址在下面楼中,因为是临时实验做的,没有UI界面,代码也没有注释,使用起来可能不太方便,编程语言C++ )
                  跟统计数据相比较,大部分数据模拟程度很高,比如说快速复活和群攻等
                  少部分数据,如近卫干员,特种干员有一些差距,特种干员可能是因为690份数据量太少导致误差,近卫可能是因为小车也被算在锁定tag内


                  总之,由于690份数据总量太小,无法直接比较,等我收集更多的数据后,我会进一步分析这个模型的误差,并完善一下模型参数,现在参数是3星池85%,4星池:13%,5星池:1.5%,6星池:0.5%,其中5和6星池由于数据量太少可能不是很准确,如果后续有更多的数据,或者发现更好的模型,也会在本帖中更新


                  IP属地:广东21楼2019-07-08 19:40
                  回复
                    说完了公招随机tag,接下来说一下,划tag阶段和选干员阶段
                    那么,现在就会有人反驳说,竟然是先分星级的池子,那么为什么会有下面的情况呢?
                    图有点模糊,我就说一下大概情况,就是图里面有资深干员tag,然后这个人就为了科学而现身,竟然你这是5星池,那好,我随便选tag都会出5星,所以他选了近卫赌因陀罗,结果出了枚兰莎(真的是太惨了XD)
                    首先,我在前面提到过整个公招机制分为三个阶段,每个阶段都是相互独立的,在公招随机tag的阶段用到的5星池只是为了随机出tag来,跟你出什么干员是没有必然联系的,出什么干员只取决你选什么标签,和被划掉什么标签


                    IP属地:广东22楼2019-07-08 19:41
                    收起回复
                      最后就是按照你选的tag随机干员是基于什么随机的,划tag几率和时间什么关系这个由于没有相应的数据,我就不在这里云了
                      另外取一位老哥的gif图,我认为这个对了解第三阶段的随机干员机制有很大帮助
                      划掉生存,出了枚兰莎,但实际上枚兰莎有生存tag


                      IP属地:广东23楼2019-07-08 19:42
                      回复
                        好了,大概就是这些了,如果有新进展我还会更新,另外有没有dalao做个公招数据统计网站呀,这每天收集公招数据的速度太慢了XD,1个月也就700~800份
                        Q&A:
                        Q:有没有保底机制:
                        A:我个人倾向于没有,因为没有意义,的确我之前说的第一阶段分星级概率的确可以加上保底分机制,实现起来也比较简单,但是我个人统计了一些数据,可以说效果聊胜于无,而且客服也说了,公招是没有保底机制的(不保证客服反水,图片取自另一位老哥

                        Q:那么建议是什么:
                        A:这个模型有一个最好的验证方式,只需要等到新干员进公招池子,你之前存的tag如果能锁到新干员,说明就是对的,如果锁不到,说明有两种情况,鹰jio对这种情况进行了时间上的限制,在更新之前的tag刷新特判为无法锁到新干员,或者是说这个公招模型有漏洞,总之,按目前的数据来看,如果你不着急的话,好tag可以留
                        Q:你能保证此机制完全正确吗:
                        A:在没看到源码之前没人可以保证自己的推测完全正确,另外就是这个模型本身也有一些小的数据误差,如果有反例或数据欢迎谈论
                        Q:怎么看待那些口胡机制的人:
                        A:可以口胡,但建议拿数据和道理说话


                        IP属地:广东24楼2019-07-08 19:43
                        收起回复