3.2幻之岛值的生成
【该部分内容仅需了解即可】
幻之岛值的生成算法,采用线性同余随机数发生器(LCGRNG),采用的特定参数后的公式即为:
——
Mirage_Seed(n+1)={[ 0x41C64E6D * Mirage_Seed(n) ] + 0x3039 } mod 0x100000000
——
取n=0,Mirage_Seed(0)=0x00000000 为初始值计算,反复递归,便得到诸如下列的幻之岛种子列表,取各行幻之岛种子的前四位,便是对应的幻之岛值Mirage_Value(n),也即:
不难看出幻之岛值其实是一串固定的数列。而前面的0、1、2、3代表的是自游戏建档设定二楼时钟起,至当前实时时钟(RTC)所经历的天数。比如刚建档当天,RTC时间还未跳至下一天,则游戏内经历RTC天数为0天,此时对应的幻之岛值便为0x0000。
而同时卡带RTC时间范围为2000/01/01-2099/12/31,总共0~36524天,也就是幻之岛值,最多能生成36525个数值,经过计算除去重复的幻之岛值,最多只有27925个幻之岛值。这也即是说,在幻之岛值理论的0~65535范围内,实际上只有27925/65536≈42.6%的值是实际能够生成出来的。
那我们可以得出一个结论,也即,对于PID随机的大量宝可梦中,只有42.6%的宝可梦PID可以开启幻之岛,而剩下57.4%的宝可梦PID是永远无法使幻之岛开启。
当你尝试使用抓了大量宝可梦存箱子,每天取出去跟暮水镇老人对话确认的方式来刷幻岛,那么你的这些宝可梦中可能有约57.4%的宝可梦,是即便你把从2000/01/01~2099/12/31所有时间全部试过一遍,都无法开启幻之岛的。理论上,仅有27925种pid尾数的宝可梦,才能开启幻之岛,实际中由于各种因素,这个数值还会更少。
对于从n=0,Mirage_Seed(0)=0x00000000 为初始值,到n=36524所列出来的对应表格,定义其为“经过RTC天数与幻之岛值的标准对应表”。