○お守り生成アルゴリズム(詳細)
ここでは風化したお守りで鑑定時の乱数が21799だった場合を例に取って説明を行う。
1.スキル1の種類の決定
21799から乱数を1つ進める。
f1(21799) = 45570
風化お守りスキル1の種類(55)で割った余り(判定値)を求める。
45570 % 55 = 30
判定値30を表で参照し、スキル1の種類として「匠」が決定される。
2.スキル1の値の判定
乱数を更に1つ進める。
f2(21799) = 46034
表から「匠」の最大値は5,最小値は1なので、以下の計算を行う。
(最小値〜最大値の間でランダムに選ばれる)
46034 % ([最大値] - [最小値] + 1) + [最小値]
= 46034 % 5 + 1 = 5
スキル1の値として5が決定される。
また、以下の式の値を「充足値A」として計算しておく。
[スキル1値] * 10 / [最大値]
= 5 * 10 / 5 = 10
※充足値Aの範囲は約1〜10
3.スキル2の有無の判定
乱数を更に1つ進める。
f3(21799) = 62335
100で割った余りを判定値として求める。
62335 % 100 = 35
閾値20以上なのでスキル2は「有り」と判定される。
(ここでは20%の確率で無し、80%の確率で有り、と判定される)
「有り」と判定された場合ステップ4へ、「無し」と判定された場合はステップ7へ進む。
※ここで「有り」と判定された場合でも、ステップ4で決定されたスキル2の種類がスキル1と重複した場合や、
ステップ5のスキル値が0だった場合、最終的にスキル2は無しとなる場合がある。
4.スキル2の種類の判定
乱数を更に1つ進める。
f4(21799) = 55339
風化お守りスキル2の種類(83)で割った余り(判定値)を求める。
55339 % 83 = 61
判定値61を表で参照し、スキル2の種類として「属性解放」が決定される。
※スキル1の種類と重複した場合、スキル2は無しとなるが、その場合もステップ5で判定を行う。
5.スキル2の値の正負判定
乱数を更に1つ進める。
f5(21799) = 577
2で割った余りを判定値として求める。
577 % 2 = 1
判定値が1の場合正の値が、0の場合は負の値が次のステップ6で選ばれる。
6.スキル2の値の判定
乱数を更に1つ進める。
f6(21799) = 36189
前のステップで「正」と判定されたので、
表から「属性解放」の最大値7を参照し、以下の計算式で求める。
46034 % [最大値] + 1
= 46034 % 7 + 1 = 7
※この計算式はステップ2の計算式の[最小値]に1を入れたものと同一で、
1〜最大値の間からランダムに選ぶのと同じ意味
また、前のステップで「負」と判定された場合は次の計算式を使う。
46034 % (1 - [最小値]) + [最小値]
※ステップ2の計算式の[最大値]に0を入れたものと同一で、
最小値〜0の間からランダムに選ぶのと同じ意味
仮にこの例で前ステップで「負」と判定された場合は、
表から最小値-5を参照し、次の結果になる。
46034 % (1 - (-5)) + (-5) = 46034 % 6 - 5 = -4
※ここで0が算出された場合はスキル2は無しになる。
ステップ2同様に「充足値B」を算出する。
[スキル2値] * 10 / [最大値]
7 * 10 / 7 = 10
※充足値Bの範囲は0〜10
※ステップ3でスキル2「無し」と判定されていたり、
前ステップで「負」と判定されている場合は計算せずに「充足値B」は0とする。
7.スロット数の判定
更に乱数を進める
f7(21799) = 29053
※ステップ3でスキル2「無し」と判定された場合はf4(21799)を計算することになる。
100で割った余りを判定値とする。
29053 % 100 = 53
また、充足値Aと充足値Bの合計を求める(小数点以下切捨て)
10 + 10 = 20
表から充足値20の行を参照し、判定値53が属するところ(0)をスロット数とする。
8.護石の種類の決定
充足値 + スロット数 * 2
= 20 + 0 * 2 = 20
英雄 1〜9
伝説 10〜15
天 16〜20
天の護石と決定される。
○お守り鑑定の連続性について(孤立お守り)
複数個のお守りを鑑定する場合、このアルゴリズムが連続して実行され、
その間に乱数を消費することは無い。
54911217997天匠5属性解放70
54912455707伝説護石王3怒20
54913460347天回避性能6聴覚保護30
54914623357英雄痛撃40
54915553397伝説運気52
549165774英雄護石王60
54917361897伝説本気5逆境-31
54918290534伝説護石王72
54919150147伝説火属性攻撃7属性攻撃-10
54920279447伝説スタミナ50
54921159197伝説本気3達人100
54922564987伝説特殊攻撃5護石王70
5492384727英雄装填数1腹減り-71
例えば風化したお守りを3個持って鑑定し、開始時の乱数が前述の例の
21799であった場合「匠5属性解放7スロット0の天の護石」となるが、
2つ目のお守り鑑定開始時の乱数は7個消費した先の
f7(21799) = 29053
となり、2個目のお守りは同様のアルゴリズムから
「護石王7スロット2の伝説の護石」となる。
2個目のお守りのステップ3の結果は「スキル2無し」なので、
3つ目のお守り鑑定開始時の乱数は4個消費した先の
f4(29053) = 56498
となり、「特殊攻撃5護石王7スロット0の伝説の護石」となる。
この例から、鑑定時の2個目以降に出るお守りは、
・乱数順7個前の乱数消費値が7である
・乱数順4個前の乱数消費値が4である
このどちらかを満たしている必要があることが分かる。
乱数が1/5400でランダムで選ばれることを前提に、
風化したお守りを1つ鑑定する時に目当てのお守りを出す確率は1/5400、
風化したお守りを2つ鑑定する時に目当てのお守りを出す確率は2/5400、
と考える人もいるかもしれないが、後者は間違いである。
上の表の乱数順54923の「装填数1腹減り-7スロット1の英雄の護石」について、
乱数順7個前の乱数消費値は4であり、
乱数順4個前の乱数消費地は7であることが分かるだろう。
つまり、このお守りは鑑定時に2個目以降で出る可能性は無く、
仮に風化したお守りを5400個一気に鑑定したとしても、出る確率は
1回目の鑑定時のみの1/5400なのである。
こうしたお守りを「孤立お守り」と呼ぶ。
なお、風化したお守りの場合、
シード値 seedに対して以下の式で孤立判定が可能である。
seed * 9368 % 65363 % 100 < 20
かつ
seed * 7799 % 65363 % 100 >= 20
なら孤立
※
乱数順7個前の乱数消費値が4
かつ
乱数順4個前の乱数消費値が7
↓
乱数を5400進めると元の値に戻るため、
乱数順5393個先の乱数消費値が4
かつ
乱数順5396個先の乱数消費値が7
↓
乱数順5393個先のステップ3の判定値が20未満
かつ
乱数順5393個先のステップ3の判定値が20以上
↓
seed * (176^(5393 + 3) % 65363) % 65363 % 100 < 20
seed * (176^(5396 + 3) % 65363) % 65363 % 100 >= 20