ポケモンWikiについて
ポケモンWikiでは記事の投稿、加筆、修正、検証等に参加してくださる方を必要としています。
ポケモンWikiは皆様のご協力により成り立っております。ぜひ編集への参加のほどお願いいたします。なお、ユーザ登録や編集で費用がかかることはありません。
編集の方法などはポケモンWikiに投稿するにはをご覧ください。
また、作業途中の記述や誤情報、根拠のない記述などが増加する可能性があります。情報のご利用にはご注意ください
誤情報や根拠のない記述を発見した場合には、アカウントを作成し、訂正いただければ幸いです。

プラチナループ

提供: ポケモンWiki
移動先: 案内検索

プラチナループとはポケットモンスター ダイヤモンド・パールプラチナにおいて希望の個体値性格などを持ったポケモンを出す、乱数調整手法である。

概要

ポケットモンスターシリーズでの個体値などの決定には擬似乱数を使用するのだが、擬似乱数の種を割り出す方法と操作する方法が解析されたため、プラチナループという一連の希望する個体値などを持ったポケモンを出現させる方法が発見された。

方法

乱数の種の電源投入時の初期値はABCDEFGH ただし、ABは(月*日+分+秒)の16進数でいう下2桁、CDは時間(24時間表記、24時は0時とする。) EFGHは(年-2000)となる。この種に1/30秒あたり2の値が加算されていく。 なお、続きからはじめるを選んだ瞬間に上記で求められる値が擬似乱数生成機にセットされる。 その後ある一定の法則で擬似乱数生成機が働く。擬似乱数発生器が働いたときの計算結果は下記の章を参照のこと。 その後ポケモンとバトルを開始したときの擬似乱数生成機が吐き出した数値が個体値その他となる。詳細は下記の章を参照のこと。 これを駆使することにより、希望したポケモンを得ることができる。

技術的解説

下記の情報についてはsmogon Universityを参考にして書いている。

擬似乱数

ダイヤモンド・パール・プラチナにおいては線形合同法によって擬似乱数を生成する。この方法は実装コストが安くそこそこ良い乱数を出力できる方法である。[1] またその乱数の種の上位16bitを乱数発生器の出力としている。ポケモンでは16進数[2]では(次の乱数の種 = 乱数の種 * 0x41C64E6D + 0x6073)[3]の下位32bitを次の乱数の種とする方法をとっている。[4]

性格値

性格値という数列(32bitである)は16bitの乱数生成器を2回使用して得ることができる数列である。この数列は性格性別特性を支配する数列である。 乱数発生器を使い発生した数値で、最初に発生させた数値を下位16bitに、後に発生させた数値を上位16bitにする。

詳細は性格値を参照のこと。

性格値の下位8bitをとると性別値になる。

詳細は性別値を参照のこと。

色違い

色違いは性格値とトレーナーIDおよび隠しID(セーブデータを解析しないと見ることはできない)を使用して生成される。 判定式:(ID上位)xor(ID下位)xor(性格値上位)xor(性格値下位)が7以下になるとき

個体値

個体値は乱数発生器を2回まわして得られる値を元に計算する。1回目に得られた値はHP、攻撃、防御の個体値の計算に使われ、2回目に得られた値はすばやさ、とくこう、とくぼうの計算に使われる。 なお、値は次の図のように使用される。[5](個体値はそれぞれ5bitである。)[6]

1回目 - 防御 攻撃 HP
1回目 x xxxxx xxxxx xxxxx
回数 1bit 5bit 5bit 5bit
2回目 - とくぼう とくこう すばやさ
2回目 x xxxxx xxxxx xxxxx

ポケモンの生成

第三世代ではいくつかの方法があったが、第四世代では単一の方法であるので、それを記す。 乱数発生は4回行われ、次の通りに使用される。

1回目 性格値の下位16bit
2回目 性格値の上位16bit
3回目 個体値1回目
4回目 個体値2回目

関連項目

脚注

  1. ただし、統計学的には良い乱数とはいえない。統計学的に良い乱数や暗号学的に安全な乱数などがある。また予測性も再現性もない乱数はさいころなどに代表されるハードウェア乱数発生器である。
  2. 4bitを1文字で表したもの。詳細は十六進法を参照
  3. 10進数だと(乱数の種*1103515245+24691)
  4. 乱数の種が0x12345678とすると次の乱数の種は0x0B71C18B、出力は上位16bitの0x0B71となる。Windows電卓で関数電卓モードにし、16進、Dwordモードにすれば計算しやすい。Qwordモードだと上位32bit分を切り捨てなければならない。
  5. よって、1回目に0x1234、2回目に0x5678が得られたとする(実際に出るかは不明)と、1回目の数字は0001001000110100となる。よって0|00100|10001|10100|となるので、HP=10100=0x14=20=K、攻撃=10001=0x11=17=H、防御=00100=0x04=4=4となる。また、2回目の数字は0101011001111000となる。よって0|10101|10011|11000となるので、すばやさ=11000=0x18=24=O、とくこう=10011=0x13=19=J、とくぼう=10101=0x15=21=Lとなる。
  6. 16進数から2進数への変換はWindows電卓の関数電卓モードを使うと表示しやすい。16進数で数字を入力した後2進に表示を切り替えると2進の16bitの数列が表示される。