植物大战僵尸吧 关注:537,853贴子:4,931,540

【随性一贴】最长的连红是多长?

只看楼主收藏回复

今天看到群里在讨论最长连红,我忽然兴起,打算认真思考一下这个问题。
每次选卡的出怪,是由场景和通过梅森旋转伪随机数算法生成的,其生成的随机序列其起始随机种子唯一确定,而起始随机种子的计算公式是
用户id+存档编号id+选卡次数*101+出怪种子
这个加法是32为无符号整数加法,其中用户id与存档编号id就是游戏存档文件的"gamex_y.dat"中的x与y,且y只能决定从哪一个窗口进入,但无尽内实际场景仍然可由修改器修改,所以存档编号id和场景实际上是无关的(例如月夜并没有游戏原生对应的存档编号id)。
因此,实际上影响出怪的只有场景、选卡次数、出怪种子。注意到101与2互质,因此对每个出怪种子,当遍历选卡次数时,起始随机种子会遍历2^32中的所有值并以2^32为周期不断循环。同时我们可以立即推出,这个循环与且只与场景有关,而且我们可以通过选取出怪种子,使得在任何一个时候(严格来说是选卡次数大于10时),都可以切入到我们需要的点开始(即选择需要的相位)
那么,无炮中有一个常见的需求,是否能挺过超长的连续红眼关(当然严格来说可能这只是具有参考性的指标之一,应该有其他很多方面的指标)。而既然出怪种子意味着相位可以任意选取,那么,长2^32的周期中最长的连续红眼关有且仅有一个,而且任何冲关都会经过且必定会经过这个最长连续红眼关,而且不管从哪一关(例如从2000关)开始游戏,我们都总能设置出怪种子使得接下来就是周期中的最长连续红眼关。
所以,接下来剩余的工作就是找到它。


IP属地:吉林1楼2023-12-27 23:36回复
    我参考了下开局界常见的出怪计算器的代码,重新写了一些找长连红的代码。
    分别以65536、4096、1024、256、64、32为步长,对于被选中的点,往上和往下寻找到第一个非红眼关,然后记录两者之差,即被选中的点所在的连红关片段的长度。相关数据发在植吧玩家交流群文件里,欢迎大家进群。


    IP属地:吉林2楼2023-12-27 23:51
    回复
      我遍历了天台场景的情况。结论是:最长的连红长度是39,有两个点会出现长度达到39的连续红眼关。当用户id=存档编号id=0,出怪种子=100时,从第2^32*k+272739033414次选卡和从第2^32*k+3652311808次选卡开始的连续39次选卡(76F)都会是红眼关,并且这是整个2^32的周期中最长的连续红眼片段。(所以无炮阵型也许最多也只需要能挺过76F连红?)
      换算方式:以用户1及RE存档代码15,且从2001F(1000次选卡)开始为例,如果希望从此开始遇到连续76F连红,则需要选卡种子可以选取为[(100 - 1 - 15) + (272739033414 - 1000) * 101] % 2^32 = 3017004650,就是十六进制的0xB3D3D66A,就使得接下来的循环从272739033414开始,即接下来会遇到最长连红。课后题:假如想要修改到从3652311808开始,出怪种子的值是多少?。


      IP属地:吉林3楼2023-12-28 00:13
      收起回复
        DE、FE和泳池场地我还没跑(有兴趣的读者可以去跑),但是天台出红眼概率最高,所以大概其他几个场地应该不会超过RE的39了。同时,因为我也记录了步长为4096时所有关所在的连红片段相位与长度,与步长32时长度大于等于25的连红片段相位与长度,所以如果有好事者也可以对此进行研究。
        步长为32时,所有长度大于等于25的连红片段有1463个,因此非常不精确地来说,大约每2^(32-5)/1463≈9.2万次选卡,会遇到一次长度大于等于25(即50F)的连红。
        步长为4096时,总共记录了1048576次选卡,其中有26612次选卡出现了长度大于等于10(即20F)的连红,占比约2.54%;有2069次选卡出现了长度大于等于15的连红,占比约1.97‰;有176次选卡出现了长度大于等于20(即40F)的连红,占比约万分之1.68。
        请注意,任选一个出怪种子接下来出现长为n的连红的概率,与任选一个出怪种子出现在一个长为n的连红片段中的概率是不一样的,我也懒得从后者精算前者了,但是数量级应该是差不多的。数据也发在植吧官方交流群了,有兴趣的读者可以把全部2^32的数据点做更详细的分析,如果这贴能起到抛砖引玉的作用就再好不过了。


        IP属地:吉林4楼2023-12-28 00:32
        收起回复
          沙发自占


          IP属地:吉林5楼2023-12-28 00:32
          回复
            凑个热闹


            IP属地:北京来自Android客户端6楼2023-12-28 00:45
            回复
              不懂帮顶


              IP属地:天津来自Android客户端7楼2023-12-28 01:21
              回复
                看不懂,顶


                IP属地:浙江来自Android客户端8楼2023-12-28 03:10
                回复
                  手机各版本是否也同此机制


                  IP属地:山东来自Android客户端9楼2023-12-28 03:54
                  回复
                    膜,


                    IP属地:北京来自Android客户端10楼2023-12-28 04:02
                    回复
                      一直想知道这个问题,终于有了解答,非常感谢。
                      也就是说真无尽不一定要求阳光不下降,如果红眼关阳光下降100左右,也是有可能可以真无尽的。当然具体数值仍需要进一步验证,并且研究的意义不大。
                      另有一个类似但可能答案不同的问题:在一次选卡中遇到的出怪列表是否由较为有限数量的随机种子控制?是否有在一次选卡中非旗帜波只出雪人的可能性?


                      IP属地:德国来自iPhone客户端11楼2023-12-28 04:57
                      收起回复
                        可以乱id出闪光僵尸吗?


                        IP属地:上海来自iPhone客户端13楼2023-12-28 09:01
                        回复


                          IP属地:广东来自Android客户端14楼2023-12-28 12:05
                          回复


                            IP属地:山西来自Android客户端15楼2023-12-28 12:40
                            回复


                              IP属地:上海来自Android客户端16楼2023-12-28 23:52
                              回复