読者です 読者をやめる 読者になる 読者になる

ポケモンSM 孵化乱数について

この記事はPokémon RNG Advent Calendar 2016の25日目、つまり最終日の記事です。
www.adventar.org

はじめに

今年も残り僅かとなりました。皆さんいかがお過ごしでしょうか。
ポケモンSMの孵化乱数が実用化され、ここ最近、多くの人が乱数調整に挑戦・成功している次第であります。

実用化に至るまで、多くの方の経験や知恵という名の力が合わさって進展し、そしてここまで来ることが出来ました。

私の役割は、スキーム解明の為に必要なデータを揃えた事だけなので、大したことはないですが、
スキーム解明及び最下位1bit埋めパズルを手伝って頂いた、ろいしん先生とさきさん
私のデータだけでは足りない部分の補足に、やつなさんとつぬさん
そしてアルゴリズムの解明に、おだんぽよさんとoupoさん

本当にありがとうございました。


この記事では、当初はSM孵化乱数のまとめ的なものを書こうかと思っていましたが、
他の人が既に解説記事などを書かれているので、補足や備考に近いものを書いていこうと思います。
個人的には、乱数調整をする上で、どうしても知ってほしい事などを書き連ねていきます。

見て欲しい記事

その前にどうしても見て欲しい、為になる記事をご紹介します。
少しでも読んで頂けたら、乱数調整をする上でも知見を広げることが出来ます。

blastoise-x.hatenablog.com
まずSM孵化乱数の調査関連で最も昔の記事です。どのように個体が生成されているのか判明した経緯などが記されています。
ちなみに、この記事にあるデータは私が集計したデータが元になっています。(頑張った)


blastoise-x.hatenablog.com
そして、この記事で詳しいスキームなどの解説が載っています。
どのように乱数値から性別や特性、ボール遺伝などが決まっているのか分かりやすく書いています。

これから話す内容は、これらの2つの記事の知識が前提となっているので、流し読みでも良いので目を通して下さい。

本題

私が制作した乱数調整ツールについて

SM孵化乱数調整ツールとして、こちらの記事に公開しています。
多くの方にツールを使って頂き、成功報告を聞いています。ありがとうございます。嬉しいです。

ところで、他の方が作成したツールと消費が1ズレたり、TSVはどうやって求めるの?という声をチラホラ耳にします。
まずこの2つについて、先程上記に挙げた記事のスキームを用いて解説します。


おさらいとして、個体生成のスキームはこのようになっています。
ニドラン系や両親に変わらずの石、パワー系アイテムの限定的な消費は除外しています。
基本形ということで。

性別決定(1消費)
※♂♀のみ、性別不明は消費なし

性格決定(1消費)
※変わらずの石を持たせても消費される

特性遺伝決定(1消費)

遺伝箇所決定(不定消費)

基礎個体値決定(6消費)
※遺伝箇所と遺伝親で上書きされる

暗号化定数(1消費)
※特に気にする必要はなし

仮性格値(0消費)

性格値再計算(不定消費)
※お守りで2消費、国際孵化で6消費、両方で8消費されます。消費の数だけ色違い判定を受けます。
色違い判定を満たしたらそこで打ち切り、ボール遺伝か謎消費へ進む。
ここがTSV算出の鍵になります。

ボール遺伝決定(1消費)
同じ種族の時のみ消費。両親が同じボールでも消費。

謎消費(2消費)
※個体処理の前後のどちらかは不明

となっています。


実は、ツールによって謎の消費の扱いが異なっています。例えば、私の作成したツールでは、
謎消費(1消費) → 個体処理 → 謎消費(1消費)
となっており、

さびたコイル氏のツールでは、
謎消費(2消費) → 個体処理
となっています。

個体を連続で生成していくと、結局、個体生成消費同士の間に謎消費が2消費入る事になるので、どちらも同じ事になります。
始点をどこから始めるか、ですね。

分かりやすいように、実際に私が色違いが出た時の状況を、図を使い説明します。
色違いと、次の個体がどのように生成されているか分かりやすいよう色を塗っています。

f:id:quandra:20161225193300p:plain

私のツールでは、紫色のseedの部分を始点とし、その時の乱数値を最初の謎消費1個目にしています。
さびたコイル氏のツールでは、その紫のseedの一つ上のseedが始点となっています。これが消費1ズレの正体ですね。

さらに、TSVの求め方ですが、性格値判定が途中で打ち切られているのが分かると思います。

国際孵化+お守りなので8消費の性格値判定が、2回しかされていない
→色違い判定を満たし、打ち切られている

という事です。したがって、最後の性格値判定、つまり打ち切られた箇所の乱数値からTSVを求めることが出来ます。
これは色違いの次の個体が分かっているから出来ることです。

今回の図は、コイキング同士の結果ですので、ボール遺伝が発生しています。
つまり、色違いの次の個体のseedの乱数値から、3つ上(謎消費1個とボール遺伝消費1個を挟んで)の、0x6FCC54D3が色違いを満たした性格値と分かります。
メタモンや異種間の孵化の場合は、ボール遺伝が発生しないので2つ上を見れば良いでしょう。

ちなみにTSVもといPSVの求め方は、
(上位16bit xor 下位16bit) / 0x10
ですので、私のTSVは945と求めることが出来ます。

セーブデータの中身を見ること無く、TSVを求めることができましたね。

さらに詳しく知りたい方へ

もっと乱数調整の事を学びたい!という人向けに、少し難しい記事を紹介しておきます。きっと役に立ちます。

・入門
乱数調整 入門 - mizdra's blog (イベントカレンダー1日目の記事)

・過去作の乱数
BW2孵化乱数の仕組みと方法 : ただの雑記byさき (特性の部分がSMとほぼ同じ処理)

Mersenne twister、及びTiny Mersenne twister関連
メルセンヌツイスタの調律を行列で書く - oupoの日記 (前提知識として)
SM孵化乱数列を計算する : ただの雑記byさき (最下位1bitのお話)
SM孵化の乱数列生成アルゴリズムについて (イベントカレンダー6日目の記事)
Tiny Mersenne twisterの逆算 (イベントカレンダー9日目の記事)

最後のあいさつ

いかがでしたでしょうか?
今回は、SM孵化乱数とイベントカレンダーの最終日という事で、このような記事になりました。
スキームを理解した上で乱数調整を行うと、失敗した時も、スムーズに解決に導くと思います。


私がイベントカレンダーの最終日を締め括って大丈夫なのか疑問ではありますが、最後に一つ締め括らせて頂きたいと思います。

みなさんも楽しい乱数調整ライフを過ごしましょう! チャオ!✋

SM孵化乱数調整ツール

この記事はPokémon RNG Advent Calendar 2016 - Adventarの20日目の記事です。

www.adventar.org

ろいしん先生が、孵化乱数調整の調査の奴隷を募集してから1ヶ月程度で、
ここまで乱数調整が出来るようになるのは驚くべき事ですね。
奇跡の1ヶ月と言っても過言ではないでしょう。


今回はSM孵化乱数調整ツールを作成したので公開します。

最新版v1.25です。
https://github.com/Quandra/SMHatchingRNGTool/releases

ちなみにGithub上にも公開しています。
github.com



常識的な範囲内ならこの記事をリンクして頂いても結構です。

エメラルドできのみ名人乱数

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

 

f:id:quandra:20161214112633p:plain

 

 ポケットモンスターエメラルドに、きのみ名人という人物がいる。彼は123番道路に居て、プレイヤーに毎日きのみを2つくれる。

そのくれるきのみには種類があり、

ザロク、ネコブ、タポル、ロメ、ウブ、マトマ、モコシ、ゴス、ラブタ、ノメル

の中からランダムで2つ選ばれる。

 

勿論、このランダムというのは乱数を使っている為、乱数の消費のタイミングさえ一致させれば任意のきのみを手に入れる事が可能となる。今回はその乱数消費の実態と解析について述べていく。

 

きのみの種類を決定する乱数消費のタイミングについて

まず1つ目のきのみは、きのみ名人に話しかけて、「きみにも きのみを わけて あげよう!」のセリフでAボタンを押した時。

2つ目のきのみは、「ほれ えんりょ せずに もう ひとつ!」のセリフでAボタンを押した時。

つまり、Aボタンを押した時にきのみの種類が決定する。フレーム単位での正確な決定のタイミングはこの時点ではまだ分からないが、このタイミングを調整する事が出来れば、任意のきのみを手に入れる事ができる。

 

どのような乱数消費になっているのか

決定時のタイミングが分かっても、きのみの種類がどうやって決定するのか分からなければ意味がない。なので実際に調査した。

ザロク~ノメルの10個のきのみの種類をランダムで決定する、としたらすぐ思いつくのは乱数値をmod10(10で割り、その余り)の値から対応したきのみが選ばれるというものである。

 

この事を念頭に置きつつ、Seed、乱数値、乱数値 mod10と手に入れたきのみのリストをまとめてみた。

f:id:quandra:20161210134718p:plain

乱数値の3E63がExcelの仕様により指数として読み込まれてますが補完して下さい。

この付近のフレームのきのみリストは以下の通りになった。

ノメル
ウブ
ウブ
マトマ
ラブタ
ゴス
ゴス
ザロク
ネコブ
ザロク
ラブタ

 

乱数値 mod10した時の値の並びと、きのみリストを比べてみると、乱数値 mod10した値が連続している箇所と、きのみが連続した箇所が一致している。

つまり、乱数値 mod10の値が4であればウブ、乱数値 mod10の値が7であればゴスのように対応していると判断して良さそう。一旦これが正しいとして表を対応させてみる。

f:id:quandra:20161210140251p:plain

 

ザロクやラブタも乱数値 mod10の値に沿っているので、乱数値mod10説は合っていると見なしても良いだろう。この表からでは、2と3と6の値の時のきのみが不明であるが、順番を考えるとそれぞれタポル、ロメ、モコシと予想できる。実際にリストの先を伸ばして調査した所、予想通りに対応したきのみが得られた。

そして、乱数消費のタイミングは、おそらく両方ともAボタンを押して3F後で合っていると思う。

 

まとめ

乱数消費のタイミングは、まず1つ目のきのみは、きのみ名人に話しかけて、「きみにも きのみを わけて あげよう!」のセリフでAボタンを押した3F後。

2つ目のきのみは、「ほれ えんりょ せずに もう ひとつ!」のセリフでAボタンを押した3F後。

さらに、その時の乱数値 mod10できのみの種類が決定する。mod10した値を0から順番にきのみに対応したリストは以下の通りである。

f:id:quandra:20161210142115p:plain

 

 

 

 

 

 

 

 

 

 

 

え、足りない?仕方ないにゃあ……

 

 

 

せっかくなので、mod10した値が連続している箇所を、0~‭4294967295‬フレームまで検索させるプログラムを作り計算させました。

結果が以下になります。最も連続しているものだけ出力しています。

 

きのみ, フレーム, その時のseed, 連続する数

ザロク -> 1239411864F 0x082AE198 10連続
ネコブ -> 256238458F 0x2F1D8AA2 8連続
タポル -> 82961193F 0x89E6607B 8連続
ロメ -> 329989807F 0xAC6FCC11 8連続
ウブ -> 235665853F 0xD830F65F 8連続
マトマ -> 217703774F 0xAA239986 8連続
モコシ -> 10416347F 0x515AAE4D 8連続
ゴス -> 2762930618F 0x1DCB4EE2 11連続
ラブタ -> 3489973580F 0x7010C9AC 10連続
ノメル -> 75525899F 0x1805B73D 8連続

 

 

大体8~11連続くらいはありました。

 

 

 

 

これだけフレームに猶予(0.16秒程)があれば、どんなにタイミングの調整が下手な方でも合わせられると思います!

 

 

 

 

 

これでいつでも努力値下げるきのみが手に入りますね!

 

 

 

 

 

みなさんも、きのみがどうしても欲しい時は、千万~億単位を待機して0.16秒の間を狙って乱数調整しましょう!

 

 

 

 

 

Q.ところで、これ何の役に立つの?

A.こんな記事を読むよりサンムーンの孵化乱数でseed算出の作業をしてる方が遥かにマシだぞ。

 

 

 

 

 

あとがき

非常に簡単かつ初歩的な乱数調査の例を取り上げたので、解析ってどんな事をするんだろう?と疑問に思っている初心者の人にも分かりやすい物であったと思う

今回は乱数値やmodといった用語が出ているが、こちらに関しては、Pokémon RNG Advent Calendar 2016の1日目の記事の、

を見て頂ければ知識の補完になると思うのでこちらも是非読んで欲しい。

 

そうそう、Pokémon RNG Advent Calendar 2016の最終日に記事を投稿する予定です。

内容は今巷で話題のサンムーンの孵化乱数についてアレコレ書くつもりです。最下位1bitだの個体値測定のやり方を、専門用語書かれても分からないという人向けに出来るだけ掘り下げて説明します。

基本情報技術者試験(FE)に合格した話

結論から言うと、もっと早くからこの手の試験を受けていれば良かったと後悔している。ちなみに初受験。

 

f:id:quandra:20161114233142p:plain

 

1ヶ月前から1日に1~2時間程度は勉強はしていたが、全く手を付けない日が度々あったので、おそらく勉強時間は実質30時間程度。

 

情報系とは無縁の高校や大学の学部だったが、独学でそれなりにプログラミングをしたり、後はインターネット歴13年(この記事を書いてる時点で23歳の理系院生)なので、普通の人よりその手の知識は多少なりともあるだろうという状態だった。

なので1ヶ月くらい前から片手間に勉強していけば余裕だろうなという気持ちで臨んだ。

私と似たような境遇の方がいるなら、同じようにそこまで勉強しなくても受かると思う。

 

結局蓋を開けてみると、上記の点数で合格していた。午前は良いとして、午後がボーダーライン付近で非常に危なかった。

言い訳としては、いつも大事なことを先延ばしにしてしまう性格故に勉強が後手に回った事と、物凄く暑かった事と、隣のオッサンが非常に煩かった事の3つが考えられる。

必要最低限の勉強しかしなかったので、こんなものか程度に思った。

 

ちなみに勉強に使った本は、キタミ式とパーフェクトラーニング過去問題集の2冊で、後は基本情報技術者試験ドットコムでひたすら過去問を解いた。

 

参考書を何にするか迷っていたが、とりあえず分かりやすく書いてそうなキタミ式を選んだ。

実際、過去問を解いたり試験を受けて感じたのは、確かに分かりやすく書いているものの、抜け落ちてる部分(触れられていない箇所)が多々あったと思った。これに関しては、過去問の解説を読むなりして十分補える。

 

就活のために取り敢えず資格の1つくらいは取っておこう、という考えだったのだが、先程も述べたように、いつも後回しにしてしまう性格の為に大学院1年の秋になってようやく取得してしまったので、

もっと前から、強いて言うなら学部生の頃から勉強して受かっていれば、今頃きっと応用情報技術者試験(AP)も取得しているんだろうなあと感じる今日此の頃である。

 

遊びつつ片手間で必要最低限の勉強をして受験料5100円払って資格を取得して効率良くいけたので満足。

 

次は来年春に応用受ける予定。一発で合格して就活に間に合えば良いのだが…。

共感覚について

共感覚という言葉を聞いたことがあるだろうか?

以下、wikipediaから引用。

共感覚(きょうかんかく、シナスタジア、synesthesia, synæsthesia)は、ある刺激に対して通常の感覚だけでなく異なる種類の感覚をも生じさせる一部の人にみられる特殊な知覚現象をいう。 例えば、共感覚を持つ人には文字に色を感じたり、音に色を感じたり、形に味を感じたりする。

共感覚 - Wikipedia

 

分かりやすく言えば、「」という文字にを感じたり、「音階のレ(D)の音」に黄色を感じるといった具合である。連想・イメージではなく感じるのである。

 

色々と調べてみると、どうやら人間が生まれた頃、つまり赤ちゃんの頃は脳のニューロン(神経)の未分化のため、様々な感覚が結びついた状態であるそうで、成長するにしたがって、ニューロン回路が分断されて独立した状態となる。

即ち、誰もが共感覚を持っていた頃があるという事になる。共感覚保持者は成長過程において結びついたまま成長した……という事らしい。(医学もとい脳科学には詳しくないので間違っている可能性あり)

 

これに関してはアメリカの神経科医 ヴィラヤヌル・ラマチャンドラン氏が2007年5月にTEDで公演した内容に出てくるので、興味があるヒトは見てみると良いかもしれない。

www.ted.com

 

ちなみに、私はこの共感覚とやらを持っている。ちなみに「」のように感じている。

wikipediaにも書かれている通り、保持者が多いとされる「文字に色を感じる共感覚」を持っており、以下の画像は私が感じるアルファベットの色である。

(色の他にも、質感(艶など)も感じるが表しきれないので省略)

 

f:id:quandra:20161007011057p:plain

勿論、ひらがな・カタカナ、漢字、数字などにも色を感じるが、身近でない言語は全く色を感じない。例えば韓国語やヒンドゥー語、アラビア語を見ても何も感じない。

 

私にとっては、この文字はこの色以外あり得ない、という感じと同じように、他の共感覚保持者のヒトにとっては「いやー、この文字は絶対この色でしょ」と感じるであろう。

面白いことに、ヒトによって違うはずの共感覚で感じる感覚、グーグル先生で共感覚保持者による報告を調べれば調べるほど、ある程度傾向があるように思える。

例えば、音階のレ(D)の音は、黄色が大半を占めている。これは日本だけではなく、海外でも傾向がある。

(ちなみに私は色聴は持ち合わせていないが、音階ごとに色のイメージは持っている。ちなみにレの音は黄色)

 

共感覚が日常生活で役に立った例は殆ど無いが、まだ自覚がなかった頃、無意識に色と英単語を結びつけて覚えていて、英単語のテストで英単語を思い出せなかった時、「あー、あのオレンジ色で黄色のやつ…あーfだからfre...frequency!」で「frequency」とうまく書いたりしたくらいである。ちなみに私はアルファベットが並ぶと最初と末尾付近の文字の色につられて、ある程度の大きさの塊として文字の色を認識する。

Time」なんて書かれると、全部青色として脳内で処理される。個別にアルファベットと見ようとすると個別に色を感じてしまうが。

 

他の共感覚保持者が実際にどのように感じているかなんて現代医学では確かめようもないし、ここまで書いておいてなんだが、もしかしたら強烈な思い込みの可能性も捨てきれない。けど頭のなかで感じるし多分共感覚なんだろうという事にしておく。