TIDSEEDを利用する乱数調整をする際の前提知識

この記事はPokémon RNG Advent Calendar 2017 18日目の記事です。

Pokémon RNG Advent Calendar 2017 – Adventar

フォロワーの某氏が、TIDSEEDを良く理解せずになんか苦しんでいたのをみて書くことにしました。
間違いがありましたら、訂正しますので有識者の方はよろしくお願いします。
また、この記事はBV保存を使用した乱数調整の経験及び水連さんのTIDSEEDの記事を読んでいることを前提として記述します。

LCGは環状線である

フォロワーの方々が使用した例えである環状線という表現をそのまま使用させていただくが、
これを認識してる方はあまりいないのかもしれない。
少なくともエメラルドで乱数する過程でことを認識することはほとんどないでしょう。

エメラルドにおいては1Fごとに1乱数が消費されるが、これはつまり1Fごとに1駅通過するということである。
BV保存を利用さえすれば、初期seed0x00000000から何F後の駅だろうと狙うのは現実的となったが、とはいえ実際に待機するとしても1ヶ月、長くても3ヶ月程度が精々だろう。
戦闘中は消費が倍速される(この表現が実際正しいのかは私は分かっていないが)ことを利用して、6ヶ月分つまり9億3千駅程度通過できるということだ。(6ヶ月×30日×24時間×60分×60秒×60F)

さて、LCGは環状線だと表題で述べたが、この9億3千駅目は環状線のどの辺りにあたるのか。
3世代(そして4世代)で使用されている環状線の駅の数は大雑把に43億駅。(0x00000000駅から0xFFFFFFFF駅まで)
つまり3ヶ月戦闘画面で放置したとしても、環状線の1/4に満たないということである。

この環状線という考え方はoupoさんが作られたLCG Ringで遊べば想像しやすいのかもしれない。

TIDSEEDの何が偉大なのか

さて、環状線であるということはいつかは最初の駅、つまりseed0x00000000に戻ってくるということだ。
ということは、戻ってくるまでの間に通過する全ての駅は乱数調整で狙うことができるということでもある。
BV保存のおかげで、1度試行するたびに何日、何ヶ月とフレーム待機をするという無謀な行為はしなずにすんだが、結局のところ狙った駅に近付くまで膨大の時間を費やさないといけないことには変わりはない。

さて、TIDSEED云々の話の前に、この環状線の駅の並びについて記述しよう。
始発駅が0x00000000というのは理解しているだろうが、次の駅は0x00000001駅……ではない。
私が以前書いた記事に手計算で次の駅を計算する方法を書いているが、0x00000000の次の駅は0x00006073である。
以後は0xE97E7B6A、0x52713895……と続き、ということを念頭に入れて欲しい。

TIDSEEDを利用した乱数調整というにはひどく大雑把にいうと表IDの駅にワープしてそこからいきなり電車に乗る手法だ。
駅が0x00000000、0x00000001、0x00000002と繋がってないと前述したようにワープできる駅というのは環状線上の至る所に散らばって配置されている。
残念ながら、ワープ先は選ぶことができないが、本来は半年以上かかる駅への距離が例えば2ヶ月まで短くなるだけでもその恩恵は計り知れないだろう。

大事なのは目的地

この手法は表IDの駅までワープするのでもちろん制限がある、つまり表IDが存在する駅までしかワープができないということだ。
つまり0x00000000から0x0000FFFFまでである。

目標の駅を調べるには、4世代が3世代と同じ環状線を使用していることから、PHS(及び他4世代乱数ツール)を利用して検索するのが一般的であるが、
当たり前だが、その検索結果が初期seedを0x00000000から0x0000FFFFである可能性はほとんどないだろう。
だが、結局この検索結果の初期seedというのは重要ではないのだ。
大事なのは目的地つまり目的の駅でありseedである。
初期SEED:21201EE 消費数:234 と検索結果が出たなら、0x21201EE駅の234駅後が目的の駅ということだ。
別に直接検索結果上の初期seedにワープしてから電車に乗る必要はなく、大事なのは目的の駅に着くことだ。
これさえ、理解すればあとは簡単だ。
TIDSEEDを利用した乱数調整のためのID厳選というのは、結局のところ目的の駅までの乗車時間はどのくらいまでなら耐えられるのかという個々の許容範囲内の駅まで行けるまで厳選する、ただそれだけの話である。

コメントを残す

サブコンテンツ

このページの先頭へ