3世代乱数生成(徘徊乱数)

ルビー・サファイア・エメラルド・ファイアレッド・リーフグリーンのすべてで、
LCG(S[n+1] = (0x41C64E6D * S[n]) + 0x6073)を用い、メソッド1にて生成される。

r[n]LID
r[n+1]HID
r[n+2]B/A/H
r[n+3]D/C/S

ただし、ルビー・サファイア・ファイアレッド・リーフグリーンでは個体値の書き換えが行われる。
B/C/D/Sは全て個体値0になり、Aは5bitのうち上位2bitが0になります。

徘徊ポケモンが生成される具体例

エメラルドの徘徊ポケモンに関しては固定乱数と差異がないので、3世代乱数生成(固定乱数)を参照。
この例においては個体値の書き換えが行われるルビー・サファイア・ファイアレッド・リーフグリーンでの生成だとする。
初期seed 0x0000BC2Fでゲームを起動し、0Fでエンカウントした場合の個体を計算する。
(実際に0Fでエンカウントするのは不可能だが、この例では実機での再現性については考慮しない)
0x0000BC2Fを初期seedに疑似乱数を生成していくと以下のような数列が生み出される。
(LCGの詳しい計算方法についてはLCG(線形合同法)についてを参照)

r[0]0x0000LID
r[1]0xB500HID
r[2]0x0EBDB/A/H
r[3]0x401BD/C/S

LIDは性格値の下位16bit、HIDは性格値の上位16bitを意味する。
よって、このポケモンの性格値はB5000000になる。
次に個体値が決まる。
B/A/Hの個体値決定に使われる疑似乱数0x0EBDを2進数にすると、0000111010111101になる。
これを下記のように分割し、それぞれを個体値とする
分割した2進数の数字を10進数にすることによって個体値は得られるが、
Bの個体値は0に書き換えられ、Aの個体値も上位2bitが0に書き換えられる。
0000111010111101
破棄BAH
32129

よって、Bの個体値は0になり、Aは10101から00101つまり5に書き換わる。
またAの個体値の計算は N mod 8によって得ることもできる。
(21 mod 8 = 5)
次の疑似乱数を用いて通常はC/D/Sの個体値が決定されるが、
ルビー・サファイア・ファイアレッド・リーフグリーンにおいては全て個体値0に書き換わるので割愛する。
よって、この条件で生成されるポケモンは性格値B5000000、
個体値29-5-0-0-0-0のポケモンである。

サブコンテンツ

このページの先頭へ