乱数調整

SM孵化乱数列を計算する

SM持ってないけどSM孵化検証やってます。
準備に手間はかかりますが乱数調整可能です。

今回はその乱数列計算に関する内容になります。
某ツールを使えば出来るとか言わない!

WEB上で計算する奴作ってみた。
http://blog.livedoor.jp/x_x_saki_x_x/RNG/SMBreeding.html


●事前知識

SM孵化仕組み検証
http://blastoise-x.hatenablog.com/entry/SM-breed

SM孵化の乱数列生成アルゴリズムについて
http://odanpoyo.blogspot.jp/2016/12/sm.html


●使用されている乱数

「SM孵化の乱数列生成アルゴリズムについて」にもある通り、
今回のSM孵化には「TinyMT」なる乱数列が使用されている。
この乱数列は内部状態としてstatus[0-3]の128bitを持ち、それを調律したものが出力される。
BWの64bit検索でも通常PCでは全探索は事実上不可能であったので、当然全探索という力技はできない。

また、調律の処理が曲者で、非線形となる処理をしているため逆算するのが難しくなっている。
TinyMTには調律を線形とする設定もあるが、その場合の逆算についてはこちら。
http://d.hatena.ne.jp/oupo/20161210/1481361175

 ↓非線形になる原因箇所
#if defined(LINEARITY_CHECK)
    t1 = random->status[0]
	^ (random->status[2] >> TINYMT32_SH8);
#else
    t1 = random->status[0]
	+ (random->status[2] >> TINYMT32_SH8);
#endif

今回はその非線形を回避すべく、最下位bitのみに注目してみることにする。


●何故最下位bitなのか

TinyMTでは基本的にビット演算で処理を行っているが、
その中に加算が交じることで非線形となってしまっていた。
その原因は繰り上がり処理。
繰り上がりを考慮しなければ加算はただのxorであるので、
繰り上がりの影響を受けない最下位bitだけを見れば線形は保たれていることになる。


●計算してみる

status[]から出力される最下位bitを計算してみると、
出力はstatus[3]の最下位bitと同じであることが分かる。

この出力の最下位bit列 $y$ から初期status列 $x$ を求める行列 $A^{-1}$ があればそれを求めたい。
$y=Ax \Leftrightarrow x=A^{-1}y$

まず、内部状態の更新処理を行列で扱えるよう変換する。
この際、status[0]の最上位bitを除外し、127×127となるようにする。
(status[0]の最上位bitは更新処理時に欠落する情報であり、また出力最下位bitから復元できないので、あると行列が正則にならない。)
その行列の0乗から126乗を求め、status[3]の最下位bit計算に使用する行を取りだして並べると $A$ が求まる。
この $A$ を計算した結果正則であったので、逆行列 $A^{-1}$ が求まった。


というわけで、無事連続する127個の最下位bitから元のstatusを計算することができました。
個体値列からの検索もやりたいけど課題が多いのでどうなることやら。

WEB上で計算する奴も作ったので是非乱数調整しましょう!
現時点で乱数列から出力計算してくれるツール公開されてないと思うけど。

バトルサブウェイ乱数~ダブル編~

以前シングルでの勝ちパターンを紹介したので、ダブルでの勝ちパターンも紹介してみる。
ただの蔵出し情報。

Pokémon RNG Advent Calendar 2016の4日目の記事です。
他の記事も面白いので読んでみましょう。そして参加しましょう。


●勝ちパターン考察
シングルの時もA連打シードの検索で苦労したが、
ダブルの場合その4/3倍の数のポケモンを条件に合致させる必要がある。
当然その分検索条件が厳しくなるので、シングルの時よりも強力な勝ちパターンが必要となる。
(スパコン使ってるとか検索環境が充実しているならその限りではない。)

シングルの勝ちパターンでは、S167から火力指数55728の攻撃を行った。
(火力指数は単純にAに技威力とか倍率とかを掛けただけ。)
当然ダブルではこれより上の火力指数を目指すこととなるが、
敵1体への攻撃では火力指数として不足するため、全体攻撃技をメインとして考察する。
性格補正はだいたいの指数が分かればいいので適当。
複雑なギミックとかは考えてない。
火力指数の端数は四捨五入した。


・ふんか
いい感じにCS高めの使えるポケモンがいる。
憶病バクフーンの眼鏡噴火がS167からダブル補正込で火力指数40753。
晴らせば1.5倍だがキュウコンは命中安定のいい全体技を持っていない。弱い。
憶病ゴウカザルのプレート猫の手噴火を使えばS176からダブル補正込で火力指数31590。
(いのちのたまの場合は1回目の火力は上がるが2回目以降が下がる。ジュエルは言わずもがな。)
この2匹で合計72343
1ターン目キュウコンを出して交代すれば、1ターン目は火力指数61130、2ターン目は珠を使って火力指数112464


・しおふき
火力は高いが如何せん覚えるポケモンのSが遅すぎるしCもバクフーンゴウカザルに劣る。
代わりに雨要員のニョロトノがなみのりと手助けを使える。
なみのりは貯水ブルンゲルならダメージを無効化できるので計算してみる。
控え目ブルンゲルのスカーフ雨潮吹きがS168からダブル補正込で火力指数37969。
憶病ニョロトノの眼鏡波乗りがS134(遅い)からダブル補正込で火力指数34147。
この2匹で合計72116
また、襷を貫通できなくなるが手助けを使った場合も計算してみる。
憶病カメックスの眼鏡手助け雨潮吹きがS143からダブル補正込で火力指数78026


・ふぶき
ふんかやしおふきより火力が低く、半減も多い。
憶病ルージュラの眼鏡吹雪がS161からダブル補正込で火力指数33818。
控え目ユキノオーのスカーフ吹雪がS168からダブル補正込で火力指数21330。
この2匹で合計55148


・じしん
いかりのつぼで火力を上げながらタイプ一致で使えるポケモンがいる。
陽気ワルビアルの鉢巻A6↑地震がS158からダブル補正込で114075
スカーフドーブルでやまあらしすればいかりのつぼは発動できる。
2ターン目以降は手助けなり重力なり襷潰しなりをすることも可能。
だが夢ワルビアルを持っていない。
誰か私に5世代でおしゃれボール入りの理想個体をください。

・だいばくはつ
技の威力の高さは随一。
最後に1匹以上残るようにする必要がある。
陽気ブニャットの鉢巻手助け猫の手大爆発がS180からダブル補正込で火力指数84797


●というわけで
面白そうなので大爆発を勝ちパターンとして考えてみた。
使用するポケモンは以下。

ポケモン特性性格持ち物努力値
キュウコンひでり適当適当適当
技:適当にまもるでもしてればいいよ
ブニャットどれでもようきこだわりハチマキA252 S252
技:ねこのて/なし/なし/なし
チェリムフラワーギフト適当きあいのタスキ適当
技:てだすけ/なし/なし/なし
ダーテングようりょくそようきノーマルジュエルA252 S252
技:だいばくはつ/なし/なし/なし

1ターン目はキュウコン→チェリムに交代する。
キュウコンの技はねこのてで出なければなんでもいい。
技選択すらしないし。
ブニャットの特性にまけんきがあるが、相手の交代を考えた場合検索時に指定する意味はない。


●シードを探してみた
勝ちパターン考察するだけでシードが見つからなければ意味がないので、
遥か昔にシードを検索してみた。
見つかった結果は以下。


初期シード:146D92BDCCBC2AD9
消費数:48(+レポートの針)
 
1人目
●つりびとのハンフリー (No.251,個体値:31) 57-74
トドゼルガ♀(アイスボディ)@メトロノーム (No.530)
    アイスボール/じしん/アンコール/のろい
        185-118-110-115-156-85
キングドラ♂(すいすい)@ハバンのみ (No.542)
    りゅうのはどう/たきのぼり/れいとうビーム/りゅうのまい
        171-136-103-149-115-105
バイバニラ♀(アイスボディ)@とけないこおり (No.363)
    れいとうビーム/こおりのいぶき/ミラーコート/こごえるかぜ
        167-103-105-151-149-99
ミロカロス♂(ふしぎなうろこ)@ナゾのみ (No.369)
    なみのり/じこさいせい/ミラーコート/あやしいひかり
        202-72-144-120-145-101

2人目
●パイロットのミカヅキ (No.299,個体値:31) 75-93
アーケオス♂(よわき)@ナゾのみ (No.551)
    じしん/だいちのちから/がむしゃら/げんしのちから
        150-160-76-180-85-162
リザードン♂(もうか)@カムラのみ (No.735)
    はらだいこ/みがわり/ほのおのパンチ/じしん
        174-137-98-116-105-141
ビークイン♀(プレッシャー)@オボンのみ (No.588)
    こうげきしれい/ぼうぎょしれい/はねやすめ/あやしいひかり
        166-100-157-90-143-60
チルタリス♀(しぜんかいふく)@パワフルハーブ (No.626)
    りゅうのまい/ドラゴンダイブ/ゴッドバード/じしん
        150-122-110-81-125-145

3人目
●ベーカリーのタマカヅラ (No.259,個体値:31) 94-112
ヘルガー♀(はやおき)@しろいハーブ (No.831)
    オーバーヒート/あくのはどう/ソーラービーム/にほんばれ
        150-99-70-162-100-161
モジャンボ♂(リーフガード)@ヤチェのみ (No.536)
    しぼりとる/くすぐる/パワーウィップ/じならし
        175-167-145-130-63-102
ドレディア♀(マイペース)@ラムのみ (No.781)
    ソーラービーム/フラフラダンス/あまえる/やどりぎのタネ
        161-72-122-146-95-126
ナッシー♀(ようりょくそ)@ヤタピのみ (No.335)
    サイコショック/くさむすび/ひかりのかべ/こうごうせい
        170-115-94-182-106-96

4人目
●パラソルおねえさんのコマ (No.253,個体値:31) 113-130
デンリュウ♀(せいでんき)@フォーカスレンズ (No.825)
    かみなり/きあいだま/シグナルビーム/パワージェム
        197-95-95-183-110-67
ガマゲロゲ♂(すいすい)@カゴのみ (No.295)
    りんしょう/ねむる/みずのはどう/ヘドロウェーブ
        180-105-116-138-104-94
ジュゴン♀(うるおいボディ)@カムラのみ (No.765)
    あまごい/ねむる/なみのり/たくわえる
        186-81-133-90-136-90
スターミー(はっこう)@おうじゃのしるし (No.861)
    なみのり/サイコキネシス/10まんボルト/れいとうビーム
        135-85-105-152-105-183

5人目
●けんきゅういんのウツケ (No.204,個体値:31) 131-148
ラプラス♀(ちょすい)@カゴのみ (No.882)
    ほろびのうた/ねむる/のしかかり/とおせんぼう
        205-105-145-94-147-80
デンリュウ♀(せいでんき)@フォーカスレンズ (No.825)
    かみなり/きあいだま/シグナルビーム/パワージェム
        197-95-95-183-110-67
プテラ♂(いしあたま)@こだわりハチマキ (No.854)
    ストーンエッジ/つばめがえし/じしん/かみくだく
        155-157-85-72-95-200
ドンカラス♂(きょううん)@いのちのたま (No.842)
    つじぎり/ドリルくちばし/ふいうち/でんじは
        207-194-72-112-72-91

6人目
●サイクリングのビルギット (No.275,個体値:31) 149-166
ガマゲロゲ♀(すいすい)@しめったいわ (No.645)
    あまごい/だくりゅう/だいちのちから/ヘドロばくだん
        180-94-95-137-95-138
マタドガス♂(ふゆう)@くろいヘドロ (No.614)
    ヘドロばくだん/かみなり/だいもんじ/シャドーボール
        172-99-140-150-90-80
アブソル♀(プレッシャー)@ピントレンズ (No.585)
    つじぎり/しねんのずつき/ふいうち/ばかぢから
        140-182-80-85-80-139
フリージオ(ふゆう)@オッカのみ (No.618)
    こごえるかぜ/ラスターカノン/ふぶき/ぜったいれいど
        145-63-50-147-155-172

7人目
●けんきゅういんのフトコロ (No.205,個体値:31) 167-184
ポリゴンZ(てきおうりょく)@オボンのみ (No.887)
    トライアタック/10まんボルト/シャドーボール/じこさいせい
        160-90-90-187-95-156
バルジーナ♀(はとむね)@たべのこし (No.851)
    みがわり/いばる/おしおき/はねやすめ
        206-85-146-67-149-100
ヘルガー♂(はやおき)@しろいハーブ (No.831)
    オーバーヒート/あくのはどう/ソーラービーム/にほんばれ
        150-99-70-162-100-161
ドラピオン♂(スナイパー)@するどいツメ (No.836)
    クロスポイズン/つじぎり/じしん/つるぎのまい
        177-142-130-72-104-115


ダーテングはSを削ってドンカラスのふいうち急所を確定で耐えるまでB振る余裕あり。


動画化する予定は今のところありません。
クリスマスにリア充爆発動画として上げるのは面白そう。

第4世代ID調整用初期シード検索ツール(WEB版)

作ってみた。
第4世代ID調整用初期シード検索ツール(WEB版)
今更なのは気にしてはいけません。
JavaScript使用。

全範囲実装済みは一部表IDのみ。
性格値からの計算は自分でやって。

DL版はこちら
http://blog.livedoor.jp/x_x_saki_x_x/archives/53827093.html

ホウオウを捕まえるだけ(動画)

大分遅くなった気もするけれど。



ホウオウの技構成は上から
 せいなるほのお
 おしおき
 げんしのちから
 しんぴのまもり
の順。

戦闘乱数の消費内容は以下の通りで合ってるはず
トレースとか爪判定とかは割愛。

乱数乱数値消費内容備考
r[0]58379初期シード
r[1]61009
r[2]14467
r[3]14705
r[4]46190
r[5]28832
r[6]22308
r[7]26209技選択おしおき
r[8]32791
r[9]25572
r[10]52577
r[11]3586
r[12]21525ゆびをふるかみつく
r[13]35098急所かみつく
r[14]11357ダメージ
r[15]49462命中
r[16]44711追加効果怯み
r[17]32296
r[18]62587
r[19]6004
r[20]34473
r[21]16965怯み
r[22]27631
r[23]9161
r[24]22091
r[25]40089技選択おしおき
r[26]19089
r[27]13855
r[28]7427
r[29]18720
r[30]20212ゆびをふるからみつく
r[31]27842急所からみつく
r[32]36036ダメージ
r[33]4051命中
r[34]4279追加効果
r[35]55839
r[36]54895
r[37]10760
r[38]42010
r[39]17101急所おしおき
r[40]51593ダメージ
r[41]39449命中
r[42]58067
r[43]47057
r[44]15150
r[45]22851
r[46]28194
r[47]37149
r[48]59462技選択げんしのちから
r[49]32721
r[50]48674
r[51]35930
r[52]18165
r[53]52089命中キノコのほうし
r[54]53858眠りターン
r[55]5094
r[56]64343
r[57]10246
r[58]22452
r[59]61984眠り
r[60]58220
r[61]7734
r[62]22340
r[63]62690技選択げんしのちから
r[64]61009
r[65]19684
r[66]49899
r[67]17742
r[68]12977急所みねうち
r[69]20585ダメージ
r[70]29380命中
r[71]30669
r[72]63610
r[73]48192
r[74]26624
r[75]38996眠り
r[76]43474
r[77]2792
r[78]26870
r[79]46825技選択おしおき
r[80]57164
r[81]43022
r[82]19070
r[83]47205
r[84]64342急所みねうち
r[85]30954ダメージ
r[86]31358命中
r[87]28539
r[88]2294
r[89]34536
r[90]40901
r[91]16888眠り
r[92]53685
r[93]45195
r[94]25367
r[95]56907技選択しんぴのまもり
r[96]24282
r[97]33934
r[98]46472
r[99]50504
r[100]23003急所みねうち
r[101]43851ダメージ
r[102]10252命中
r[103]44072
r[104]16
r[105]33376
r[106]10319
r[107]64212しんぴのまもり
r[108]40361
r[109]52879
r[110]14018
r[111]60002
r[112]50146
r[113]42981技選択おしおき
r[114]27126
r[115]2015
r[116]44660
r[117]1055
r[118]54060急所みねうち
r[119]8014ダメージ
r[120]35918命中
r[121]33608
r[122]38956
r[123]54000
r[124]40836
r[125]25254急所おしおき
r[126]54869ダメージ
r[127]25286命中
r[128]26759
r[129]47574
r[130]41717
r[131]26707
r[132]20630
r[133]26165
r[134]48346技選択げんしのちから
r[135]35494
r[136]34676
r[137]18562
r[138]49960
r[139]28311急所みねうち
r[140]2139ダメージ
r[141]47297命中
r[142]1389
r[143]26448
r[144]64047
r[145]21601
r[146]16626急所げんしのちから
r[147]43790ダメージ
r[148]57078命中
r[149]35488追加効果
r[150]57171
r[151]4136
r[152]18056
r[153]35630
r[154]35409
r[155]38481
r[156]63618技選択げんしのちから
r[157]31504
r[158]10470
r[159]16409
r[160]51584
r[161]5063命中キノコのほうし失敗
r[162]39322
r[163]185
r[164]36746急所げんしのちから
r[165]4272ダメージ
r[166]48660命中
r[167]49679追加効果
r[168]59854
r[169]3757
r[170]44020
r[171]50918
r[172]53135
r[173]49669
r[174]5855技選択しんぴのまもり
r[175]60795
r[176]6749
r[177]42632
r[178]18394
r[179]38460命中キノコのほうし失敗
r[180]32646
r[181]36342
r[182]13787しんぴのまもり失敗
r[183]13010
r[184]44235
r[185]45217
r[186]37789技選択おしおき
r[187]49505
r[188]31831
r[189]9296
r[190]59059
r[191]47118急所みねうち
r[192]29676ダメージ
r[193]56678命中
r[194]64480
r[195]9409
r[196]863
r[197]40516
r[198]19620急所おしおき
r[199]1323ダメージ
r[200]13893命中
r[201]30954
r[202]10778
r[203]6922
r[204]52462
r[205]50916
r[206]49408
r[207]49323技選択しんぴのまもり
r[208]61586
r[209]47971
r[210]19223
r[211]33200
r[212]63178急所みねうち
r[213]62377ダメージ
r[214]429命中
r[215]31763
r[216]59457
r[217]43434
r[218]42359
r[219]52586しんぴのまもり
r[220]48810
r[221]27887
r[222]44963
r[223]36971
r[224]36340
r[225]34238技選択げんしのちから
r[226]32814
r[227]11954
r[228]3260
r[229]26231
r[230]7538急所みねうち
r[231]2754ダメージ
r[232]12291命中
r[233]53057
r[234]22786
r[235]50761
r[236]52768
r[237]34789急所げんしのちから
r[238]28089ダメージ
r[239]43176命中
r[240]31991追加効果
r[241]54265
r[242]27408
r[243]59826
r[244]8043
r[245]1344
r[246]432
r[247]58546技選択げんしのちから
r[248]54800
r[249]53328
r[250]34119
r[251]30642
r[252]18213捕獲
r[253]18293捕獲
r[254]14239捕獲
r[255]4858捕獲


技失敗時はトレース消費が2減る、はず。多分。
詳しい仕組みとかは自分で調べて。

クチバシティにおけるラティ乱数の不定消費について

クチバラティのあれ。
ダイゴとの会話が始まるまでにNPC動くよねってことでNPCの挙動の確認も兼ねて調べてみた。
絶対既に誰かがやっててもおかしくないと思うけどまあ


●クチバシティにおけるNPCの挙動
とりあえず調べた分をば。

クチバシティにいる動くNPCは2人。
行動範囲は右上が縦7×横3、左下が縦3×横3で、初期状態ではともにその中央にいる。
また、上下左右の4方向のいずれにも移動する。

行動決定については両方のNPCが見える位置にいい感じに不定消費のない家があったので、そこから出て確認した。
その結果、30fpsの動画撮影での確認なので正確性は保証できないが以下のように推察された。
マップ切り替え後はまずそれぞれの待機時間決定から。
それぞれにおいて、
 1.移動終了後(または最初)待機時間決定
 2.待機時間終了後移動方向決定
を繰り返す。
同じタイミングで両方が決定処理を行う場合、右上のNPCの処理が先に行われるよう。
(両方1、両方2、右上1左下2、のみのパターンまで確認、他未確認。)
待機時間は30fpsの動画で16、32、48、64コマ分のいずれか。
移動はできる場合のみ行われ、その場合30fpsの動画で8コマ分。
移動しない場合(方向転換のみの場合も含む)はそのまま待機時間決定が行われるものと思われる。

1.待機時間決定
r mod 4で決定。
 0:16コマ分
 1:32コマ分
 2:48コマ分
 3:64コマ分

2.移動方向決定
r mod 4で決定
 0:上
 1:下
 2:左
 3:右
クチバのNPCについてしか調べてないので、2方向のNPCの場合とかは未調査。


●クチバラティ乱数時の不定消費計算
以上を踏まえた上で調べてみた。が、実際ここまで詳しく調べる必要性はなかったというね
だいすきクラブを出た時にダイゴ以外のNPCが見えることはあまりないが、左下のNPCが最初に左に移動すればいい感じに画面内に入ってくるのでそれを利用して調べた。
 16コマ分待機から左移動の場合、移動し終わってから止まって会話に入った。
 32コマ分待機から左移動の場合、移動中に止まって会話に入った。
 48、64コマ分待機の場合画面内に入ってこなかった。
これらにより、32-40コマ分の間分だけNPCが動く時間があるものと推測される。
NPCが最速で動いた場合でも最初は必ず移動する余裕があるので、2回目の移動方向決定まで最短16+8+16コマ分かかるので、40コマ分までの間にその処理に入ることはないものと思われる。

よって、NPCによる消費数は最初2つの乱数値に依存し、その消費数はそれぞれの乱数値による数2つを加算したものとなる。
その数は、r mod 4に対し以下のように対応する。
 0:3
 1:2
 2,3:1
実際に何回か確認してみた感じでも、予想通りの変化が出た。

この後、ラティの個体決定処理までの間に4つ用途不明の消費がある。
(ここが4つ固定でない可能性は否定できないので、その場合また再考の余地あり。)


とりあえず表にまとめると、以下のようになる。

乱数消費内容
r[n+1]~r[n+m]NPC消費、2-6消費
r[n+m+1]~r[n+m+4]用途不明、4消費
r[n+m+5]LID決定
r[n+m+6]HID決定
r[n+m+7]HAB決定
r[n+m+8]SCD決定
r[n+m+9]徘徊位置決定

ちなみに徘徊位置決定はmod 25です。


NPC動く時間意外と短かった。
せっかく移動可能かの判定まで考えたのに
あくまでこうだろうということなので、何かしら反例なりあれば状況含めコメントくださいな。

プロフィール
さき

ポケモンの乱数調整とかツールとか。サンムーン乱数調整できました。
Twitter→@water_blow

広告
最新コメント
記事検索