トレーナー決定後の謎の消費解明した!!

トレーナー決定後に不定個数の乱数消費があってどういうものか全く分からなかったのだけど今解明できた!やったー!

トレーナー決定後にその7人と重複しないようにまた7人分のトレーナーを決定する。その消費量が一致する。

こういうことでした。多分マルチバトル用にもう1セットトレーナーを決定していてその消費なんだろう。分かってしまえば簡単なことだった・・・。



どうやって調べたか。
ネジキのパーセントのときの反省から悩むよりとにかく手を動かそうってことで、トレーナー決定後に rand % N で何か重複なしでM個分決定していると仮定して調べた。
以前最初の6匹のシャッフルを調査していたときに1周目を174回挑戦した記録が残っていたのでそれを使った。(1戦目のトレーナーも記録していたのが後で役にたった)

n は剰余の値、mは何個分決定しているか、aはトレーナー決定後の固定の消費量、 bは謎の消費の後の固定消費量、最後は記録のうちどれぐらい一致しているか

n = 99, m = 7, a = 0, b = 0, 69.2%
n = 198, m = 7, a = 0, b = 0, 63.5%
n = 99, m = 6, a = 0, b = 1, 70.4%
n = 198, m = 6, a = 0, b = 1, 64.8%
n = 99, m = 5, a = 0, b = 2, 65.4%
n = 198, m = 5, a = 0, b = 2, 61.0%
n = 99, m = 6, a = 1, b = 0, 62.3%
n = 198, m = 6, a = 1, b = 0, 60.4%
n = 99, m = 5, a = 1, b = 1, 64.2%
n = 198, m = 5, a = 1, b = 1, 61.6%
n = 99, m = 4, a = 1, b = 2, 60.4%
n = 99, m = 5, a = 2, b = 0, 60.4%
n = 99, m = 4, a = 2, b = 1, 61.6%

n = 99がよく一致している。99といえば1周目のトレーナー決定の剰余の値だ。これで謎の消費でトレーナーを決定していることが分かった。

そして、最初に決定した7人のトレーナーと重複しないようにもう一度7人(7人目は rand % 19 + 100)のトレーナーを決定していると仮定して確かめてみると全て一致した。

汚いけれど調べるのに使ったプログラム: factory-tools/log-trainer.rb at master · oupo/factory-tools · GitHub

追記 (2010-01-21T18:38:45+09:00)

1周目はこれで正しそうだけど、2周目以降は違うみたい・・・。

追記 (2010-01-22T22:33:01+09:00)

  • プラチナの1周目では二回目のトレーナー決定の7人目は r % 19 + 100 ではなく、r % 99の模様。マルチバトルでのトレーナー決定も同じだとしたら7戦目のトレーナーのうち一人は、プラチナが親になると1周目トレーナーになって、HGSSが親になると2周目トレーナーになるということ。今DS二台ないので確かめられないけど二台用意できたら確かめたい。
  • 2周目の二回目のトレーナー決定は6人目までしか決定していないようだ。エミュを使ってメモリを見てみると7人目は0x0135 (=309)と存在しない値になっていた。