第4世代の乱数調整やってみた(真イ)
ポケモンの色違いはかっこいいよね!!
いまの旬はハバタクカミなので色ハバタクカミがほしいけど僕が持ってるのヴァイオレットなのでハバタクカミの入手方法難しいんですよね。
たまに上のサーバでポケモンしてるのでよかったら一緒にどうでしょうか
佐斎さんがホストのサーバです。
最近フルパのLOLが行われてたり、僕と佐斎でOWしてたりしてますが、ポケモンしてくれる人がいないのでカナC
本題に戻って、最近、普通の色違いじゃ飽きてきて、リボンコンプや捕まえた場所の厳選をした色違いガブリアス手に入れるためにプラチナで乱数調整をやっていきます。
乱数とは
まず乱数の説明から
乱数とは簡単に言えばプログラム上で確率を求めるときに使う0から9までの数字が不規則かつ等確率に現れるように配列されたもの。
乱数を使ってどのように確率を求めるかは下の図に書いた
まず、乱数は受け取る度に異なる値を渡してくれます。(後述)
今回欲しいのは整数の百分率だから、受けとった乱数を100で割る。
すると、0〜99の100通りの余りが求まるのでしたから30までの余りを真、それ以外を偽と扱えば確率が求まる。
(例えばじゃんけんするプログラムなら受け取った乱数を3で割ると0〜2の余りが求まるから
0:グー
1:チョキ
2:パー
と割り当てたりする)
乱数は確率が絡むたびに生成されると覚えておきましょう(これが乱数消費)
乱数生成
乱数生成はどのように行われてるかは
生成した乱数の種がが12345678だとすると
下位4桁(5678)を乱数をして使い
上位4桁(1234)を次の乱数の種の生成のために使うっていう感じです。
(実際の乱数は10進数ではなく16進数であり桁数も32Bitある、実際に使う乱数は半分の下位16Bitである)
次の乱数の種は以下の式で求めている。
次の乱数の種 = 乱数の種(上位16Bitの奴) * 41C64E6D + 6073
参考Wiki
初期乱数
で、ここで大事になってくるのは、一番最初に生成される乱数の種は上の式では求めることができないということ。(乱数の種のを求めるときは一つ前に生成された乱数の種の上位16Bit必要だから。最初に再生されるのだから一つ前の乱数なんてない。)
この最初に生成される乱数を初期乱数(または初期Seed)という。
初期乱数の求め方は簡単で
乱数の種の電源投入時の初期値はABCDEFGH
ABは(続きからは始めるを押した、月*日+分+秒)の16進数で2桁、
例えば10月10日13時2分5秒なら10*10*5+2=107
これを16進に直した6b
CDは時間(続きからは始めるを押した時間)
例えば上の時間で続きから始めるを押してたら13
これを16進に直した13
EFGHは(年-2000+フレーム差)となる。
フレーム差とはソフトを起動してから続きから始めるを押すまでの時間をフレームに変換した値(1秒=60F)
要はかかった時間を秒にして60倍した値である
なので例えば2020年に続きから始めるを押し、起動してからかかった時間が90秒なら
2020-2000+90*60=5420となり
これを16進に変換した152cとなる
なので上の条件での初期乱数は6b13152c
なお、プラチナは2/60秒(2F)ごとに2の値が加算されていく。
↑これ大事。要は初期乱数のEFGHがどんなにがんばっても任意の値にならない場合がある。2ずつ増えるから。この場合は年を1つずらす必要あり(2020→2021か2019)
じゃあやってみる(まずトレーナIDから)
一番上の
表ID54342
裏ID54493
を狙っていきます。
うらID さえわかれば色違い出すのは簡単ですが、せっかくだしメロボようのIDにしてみます。
まず月*日+分+秒が149か405なので
続きから始める時間は10月10日1分48秒にする(秒は大きいほうが後で楽、48〜54くらい。あとで調整があるから54より大きくしない方がいい)
時間は書いてある通り13時
ソフト起動から続きから始めるまで90秒ほど欲しいので
5400F残せる範囲で好きな年を選ぶ(今回は2020年)
つまりフレームは5580F(93秒)+空白時間(1.7秒)(デバイスごとに誤差ある)
DSの設定では時間の秒数は設定した瞬間に00秒になる。
時間を設定した後すぐにソフトを起動するのに12秒ほどかかるので
仮に2020年 10月10日 13時m分13秒としとく
(リセマラ時間短縮するため起動する秒は小さいほうがいい)
ここから続きから始めるのに94.7秒(1分34.7秒)かかるので
続きから始める時間は10月10日1分48秒から逆算して
起動するのは2020年 10月10日 13時0分13.3秒
と求まった
起動時間 2020年10月10日13時0分13.3秒
続きから始める時間 2020年10月10日13時1分48秒
じゃあやってみます。
一回でうまくいくわけないだろ。おらぁ!微調整の時間だ!!
はい、1/30秒の世界の調整なので一回で成功しません。
しかもDSやソフトごとに誤差があるのでほぼ一発では無理です
ま、後4から5回くらいやってたら終わるのでがんばります。
さっきの乱数調整ででたトレーナIDからSeed値(乱数の値)を検索かけました。結果2がめちゃくちゃ近いです。今回引き当てたSeed値は結果2でしょう
上4桁はぴったりです。あとはフレーム時間が小さいので、大きくします
264F(4.4秒)足りない
調整例
起動時間 2020年10月10日13時0分13.3秒
続きから始める時間 2020年10月10日13時1分48秒
この二つの差を大きくします。起動時間の秒数はこれ以上縮めれない(時間設定してからソフト起動に13秒くらいは欲しい。4秒も短くできない)
ので、続きから始める時間の秒数を大きくする。
月*日+分+秒が149か405だから
9月10日13時6分53秒に変更
続きから始める時間 2020年9月10日13時6分53秒
フレーム時間は94.7秒に+4.4秒するため99.1秒そこから逆算して
起動時間 2020年9月10日13時0分13.9秒
調整前
起動時間 2020年10月10日13時0分13.3秒
続きから始める時間 2020年10月10日13時1分48秒
調整後
起動時間 2020年9月10日13時0分13.9秒
続きから始める時間 2020年9月10日13時6分53秒
じゃあやってみる(調整後)
たぶん今回出たIDは結果2ですかね。たぶん
6フレーム長かったようです。(後で22F遅かったことが分かった。理由は後述してます)
もうリーチです。6フレームならもう時間を求め直す必要はなさそうです。
タイマーの秒数の小数点以下をすこしかえるだけです。
もうここまでくればざくアクのレインニュースでタキタロウ狙うより簡単なのです
続けます。
目標フレームが15e0(5600)なのに対して今回の15f6(5622)だから22F遅かったみたいです。結果の表に書かれているフレーム:5602はあてにしてはいけないです。
初期Seedの下四桁の16進数を10進数に変換した値を参照しましょう。
ここで重大発表!!!!!!!!
今回プラチナで乱数調整して最新作であるSVに連れて行こうかと考えていたんですが、3月28日に過去作から最新作に送れるポケモンバンクがつかえなくなりました。
そのためいくら乱数調整で手に入れても最新作に連れて行くことができません。それゆえ、カエシモ書いてる途中ですが乱数調整するモチベが0になったのでここで終わり桝太一
過去に成功した乱数調整の成果物(ゴウカザル以外全部色違い。いや、ビーダルはどっちだろう…..普通色にみえる…な。全体的に色違いかどうか分かりづらいメンツ)
参考動画
さーて、再来週のカエシモは~?
強くなりすぎたマオちゃんが駄々をこねて手が付けられない
悲報:ポポナッツ最終形態
ジャンクラット、事故で意識不明
のうちの一本になるかもです。
それではまたみてくださいね
じゃん
けん
_______________________________________________________________________________________________________________________________________________________________
tuitta