5genSearchの登場で本格化した初期seedの概念の違いについて
掲題のツールを使ったことがある人はぜひご一読ください
目次
目次を閉じる
はじめに
登場する乱数調整ツール
乱数調整ツール
- 5genSearch
- SSS4
- bwseedlist
- RNG Repoter
- プラスルツール
各乱数調整ツールの互換性について
SSS4で使っていた初期seedを5genSearchでそのまま使用すると、
個体値は同一で性格値乱数列がズレた個体が出現します(逆も然り)
同一作成者のSSS4→bwseedlistを使った場合は、このような事象は起こりません
実際の例
起動時間:2000年1月1日00時00分00秒
同一本体かつ同一ソフトを使用して、同じ時間に起動した場合、
同一個体値の結果が出力されますが、ツールによって違う初期seedとなります
※Timer0ズレは考慮しないものとする
SSS4の結果例
年,月,日,時,分,秒,Timer0,消費数,H,A,B,C,D,S,めざパ,威力,初期seed
0,1,1,0,0,0,c79,0,30,15,27,18,16,17,じめん,44,58D529DB29A9ED57
5genSearchの結果例
初期seed | 年 | 月 | 日 | 時 | 分 | 秒 | Vcount | Timer0 | 初期seed (個体値列) |
任意消費 | 色 | H | A | B | C | D | S | めざパ | 入力キー |
A022D86E3C927504 | 2000 | 1 | 1 | 0 | 0 | 0 | 60 | C79 | 58D529DB | 0 | 30 | 15 | 27 | 18 | 16 | 17 | 地44 | 無し |
初期seedの意味
初期seedとは?
乱数調整ツール利用者側の認識としては、
パラメータなどを考慮して起動時間に始めたときの最初のseed値
概ね、この認識があれば利用者としては問題ない範囲かと思われます
オフセットとの兼ね合いも、【最初から/続きから】の始め方によって、性格値乱数列の消費数が『補正』されるので0からではない
5genSearchの場合はオフセットが考慮されているので、0からという認識で辻褄が合います
初期seedの概念の違い
■結論
SSS4と5genSearchでは同一個体値でも初期seedが異なるのは、
初期seedの概念が作成者によって異なるからです
SSS4の初期seed
共通初項から1つ進んだ乱数を初期seedと定義している ※1
(※1 違ってたらこっそりご指摘ください)
3.性格値乱数列の決定方法(線形合同法)
性格値seed列{S1[n]}は
S1[n+1] = S1[n] * 0x5D588B656C078965 + 0x269EC3となる。ただしS1[0]=初期seedで、65bit以上は切り捨て。
乱数r1[n]はS1[n]の上位32bitとなるが、メモリの初期値はS1[0]であり、
上に書いたように最初に使われる乱数はS1[0]ではなくS1[1]の上位32bitなので、実際の乱数として使われるのはr1[1]から。
(引用;BW乱数調整解説 乱数の仕組み)
5genSearchの初期seed
RNG RepoterのResearcherタブや、計算結果より共通初項を初期seedと定義しているようです
■計算式(『性格値乱数列の決定方法』に基づく)
0xA022D86E3C927504* 0x5D588B656C078965=
0x3a640bcccebcaf7058d529db29834e94
0x58d529db29834e94+ 0x269EC3 =
0x58d529db29a9ed57
運用上の留意点
性格値乱数列消費数を別途考慮することで、初期seedの互換を持たせることが可能です
※別途オフセットの考慮は必要
- SSS4→5genSearch・・・性格値乱数消費数を-1
- 5genSearch→SSS4・・・性格値乱数消費数を+1
プラスルツールでの検索
プラスルツールは両方ツールの初期seedに対応して結果を出力させることが可能です
プラスルツールでの『初期seed』に該当する、「seed0」「seed1」はそれぞれ以下の初期seedに対応しています
- S1[1] →SSS4,cal_offsetなど
- S1[0]→5genSearch
(参考:PlusleSeedCalculator.Library.ICalculator インターフェース - Plus Le Tool)
bwseedlistでの比較
性格値乱数列を1消費させる手段として、オフセット+1としております
②と③のリスト結果が一致していることから互換性を持たせることができています
①5genSearchの初期seed(オフセット0)
<固定リスト(初期seed:0xA022D86E3C927504+オフセット:0)>
(ID:0-0、ID補正無し)
消費数,乱数,性格,シンクロ,性格値,色違い
0,A022D86E,ひかえめ ,○,D8D429DB,
1,58D529DB,いじっぱり,×,1EE380DC,
2,9EE280DC,ようき ,○,1FF97FEA,
3,1FF87FEA,おとなしい,×,89EE5FD5,
②5genSearchの初期seed(オフセット1)
<固定リスト(初期seed:0xA022D86E3C927504+オフセット:1)>
(ID:0-0、ID補正無し)
消費数,乱数,性格,シンクロ,性格値,色違い
0,58D529DB,いじっぱり,×,1EE380DC,
1,9EE280DC,ようき ,○,1FF97FEA,
2,1FF87FEA,おとなしい,×,89EE5FD5,
3,89EF5FD5,てれや ,○,D9036CF7,
③SSS4の初期seed(オフセット0)
<固定リスト(初期seed:0x58D529DB29A9ED57+オフセット:0)>
(ID:0-0、ID補正無し)
消費数,乱数,性格,シンクロ,性格値,色違い
0,58D529DB,いじっぱり,×,1EE380DC,
1,9EE280DC,ようき ,○,1FF97FEA,
2,1FF87FEA,おとなしい,×,89EE5FD5,
3,89EF5FD5,てれや ,○,D9036CF7,
さいごに
乱数調整ツールによって初期seedの定義が違う実情は、
ツール使用者が正しく仕様を把握して対処するしかないと思われます