ジョインアベニューの日替わりseedの周期

ポケモンBW2ジョインアベニューの日替わりseedで使われている漸化式がちょっとおもしろいです。

s[n+1] = ((s[n] * 0x5d583d6d6c078979 + 0x26a693) mod (2^64)) >> 32

まず、0がこの漸化式の不動点になることがわかりますが、実際のゲーム中では0になったときは全く新しい値で初期化されるようになっています。

この数列は大部分の初項については途中から循環が始まる準周期的数列になります。図で書くとσの形になるだとかカタツムリの形になるとかいってもいいかもしれません。

そこで循環部分がいくつ存在して、それらの周期はいくつなのか、ひたすら計算させて調べてみました。

周期 循環部分から1つ代表させたseed
83458 79f18008
123305 2134bc83
31719 86e648d5
2598 12719a8c
2466 6cf5a895
773 0e50bafa
6 6a3db7e0
25 04cbaf9f
15 1c905da4
1 00000000
1 eae02079

このように循環部分は11個あり、そのすべてが比較的短いことがわかりました。

さらに0x00000000に至るseed全体をグラフにしてみました。

面白いですね。

周期が6の循環部分に至るseed全体のグラフも書きたかったのですが、6a3db7e0で初めて循環部分にいたるようなseedが84256個もあってうまくいかず。他の5つのseedは13個とか8個とか0個とかとっても少ないのに…。

筆者: oupo (連絡先: oupo.nejiki@gmail.com)