お守りテーブル理論 お守り鑑定編

別に炭鉱夫する上ではあまり知らなくていい知識です
0
ナコト @platonic_aki

お守りテーブル理論、内部処理編

2011-01-20 21:46:53
ナコト @platonic_aki

5400周期でループする乱数とか、お守りの計算方法の具体的なところを説明する。

2011-01-20 21:47:52
ナコト @platonic_aki

まずは乱数だが、コンピューターで使われる乱数と言うのは、基本的にランダムな値じゃない擬似乱数というのを用いている。 ある値を計算すると、別の値が出てきて、さらにそれに対して同じ計算をして次の値を出す。こういう風にして乱数を計算している。

2011-01-20 21:50:19
ナコト @platonic_aki

MHP3で使われている乱数の計算式に、1という値を入れて計算すると176という数が得られ、さらにその176という数を計算すると30976という数になり… という風に計算していくと、5401番目の数が1になってしまう、というのが周期5400で乱数がループするという。

2011-01-20 21:53:18
ナコト @platonic_aki

1ではじめた時の5400周期のループ、2ではじめた時のループ……という風に、12個のループがある。これをテーブルという。 最初の値を1,2,3,4,5,6,9,10,13,15,18,26と設定すると12テーブル得られる。1の代わりに176とか、ループ内の数ならどれでもいい。

2011-01-20 21:56:59
ナコト @platonic_aki

これを使ってお守りを鑑定している。計算の仕方は前回述べたとおり、乱数を進めながらスキル1決定→スキル1値決定→スキル2の有無判別→あればスキル2値、無ければスロット数→(以降あれば)スキル2値のプラスマイナス→スキル2値→スロット と決定される。

2011-01-20 22:00:23
ナコト @platonic_aki

もうちょっと細かく説明すると、スキル1に出てくるスキルの一覧はあらかじめ決まっていて、古びたお守りだと43種類。これをどう決定しているかというと、乱数の値を43で割った余りを出して、0~42の43種類の数を使って決定している。この余りを使った計算はよくある手法だ。

2011-01-20 22:03:14
ナコト @platonic_aki

余りが0なら聴覚保護、1なら風圧……42なら反動みたいな感じで決められている。これはスキル2を決める場合も同様。余りの値がどう対応するかは、古びたお守りのスキル1、スキル2、光るお守りのスキル1、スキル2、なぞのお守りのスキル1についてあらかじめ決まっている。

2011-01-20 22:06:46
ナコト @platonic_aki

スキルの値はどう決定されているのかというと、これまた各お守りの各スキルごとに最大値が決められている。マイナスがあるスキル2は最小値も決められている。スキル1の値は、スキル1を決めた乱数の次の乱数を、最大値で割った余りに1を足して決定している。

2011-01-20 22:08:37
ナコト @platonic_aki

例えば古びたお守りのスキル1の匠だと、最大値は5なので、5で割った余り、0~4に1を足して、1~5の値が出るようにしている。最小値は少々面倒だが、(最小値+(乱数を1-最小値で割った余り))という計算で出している。これで0から最小値まで出るようになる。

2011-01-20 22:12:05
ナコト @platonic_aki

スキル2が出るかどうかの判定だが、これは乱数値を100で割った余りでやっている。0~99まで、100個出るからいわゆるパーセントの計算に使う。古びただとこの値が25以上ならスキル2がつく。75%の確率で付く、という寸法だ。光おまは35以上。65%。

2011-01-20 22:14:18
ナコト @platonic_aki

スキル2がプラスになるかマイナスになるかは、2択なので2で割った余り。0か1。0(偶数)ならマイナスで、1(奇数)ならプラス。

2011-01-20 22:15:29
ナコト @platonic_aki

次にスロット値の計算だが、その前に評価値という概念を説明する。評価値というのは、お守りのスキル値を得点にして、お守りの性能を評価する値だ。これが高いと龍や城塞で、低いと女王や騎士になる。

2011-01-20 22:17:55
ナコト @platonic_aki

これの計算式は、(スキル1値/スキル1最大値)*10+(スキル2値/スキル2最大値)*10+スロット数*2。スキル2の値がマイナスのときは0換算される。

2011-01-20 22:20:20
ナコト @platonic_aki

テーブル1の人気お守り、匠4氷耐性-5スロ3を評価すると、匠の最大値は5なので、スキル1の評価は(4/5)*10で8点。スキル2はマイナスなので0。スロット3なので*2して6。合計14。小数点以下が出た場合は切り捨てる。

2011-01-20 22:21:21
ナコト @platonic_aki

この評価値がスロット数の決定に影響する。スロットの分の点数を抜いた評価値ごとにスロットの存在確率が決まっているんだ。例えば評価値1だと22%でスロ0、50%でスロ1、20%でスロ2、8%でスロ3つく。

2011-01-20 22:24:24
ナコト @platonic_aki

計算式としては、乱数を100で割った値が0~21だと0、22~71だと1、72~91だと2、91~99だと3と計算される。この確率は評価値ごとに細かく決まっているので詳細は割愛するが、スロ抜きの評価値が13~15だと最大スロ1、10~12だと最大2、9以下だと最大3となっている

2011-01-20 22:28:59
ナコト @platonic_aki

したがって、匠5の時点で評価値が10になってしまうので、匠5スロ3というお守りはそもそも存在しなくなる。匠4の評価値8でなければスロット3にはならない。

2011-01-20 22:30:10
ナコト @platonic_aki

そして最終的にスロットを含めた評価値が、13以上なら龍、8~12だと王、7以下だと女王になる。光るお守りは8以上で城塞、7以下で騎士になる。匠3スロ3という準神おまであっても、評価値が12になるので王として出てくるというわけだ。

2011-01-20 22:32:29
ナコト @platonic_aki

スキル1とスキル2が同じスキルになってしまった場合や、スキル2の値が0になってしまった場合はスキル2が削除され、ゲーム上ではスキル1しか無いように見える。計算上はスキル2を計算しているので、乱数はもちろん7個消費している。

2011-01-20 22:36:46