【まがつ】セインハイトの指輪の効果の予測(失敗)

f:id:siratama_z:20191220030345p:plain

セインハイトの指輪

セインハイトの指輪(以下、聖指輪)が実装され、「スタンしやすくする」という新しいスキルが登場しました。要するに「スタンに必要なバッシュの回数が減る」ということなのですが、どのように減るのか、理論的な説明ができないかどうかを検討して、ある仮定の下で一つの結論を得ることができた得ようとして失敗したのですが、捨てるにはもったいないので記事にしてみました。

 

とりあえず結論

使用させていただいたデータ

以下のツイートを参考にさせていただきました。

仮定した条件

実はスタンの仕様については、正確なところは分かっていないように思われます。おそらく一番有力であろう、バッシュによる蓄積値と敵の耐性値の存在を仮定します。これは星盾や雷電などの挙動を見れば自然な仕様であると思いますが、今回は以下を仮定しました。

  • シールドバッシュ1回につき蓄積値が決まっている(後に100とする)
  • 敵には耐性値があり、これも決まっている
  • 蓄積値はスタンしない限り減らない、またスタンすると0に戻る
  • 蓄積値が耐性値以上になったときにスタンする
  • 聖指輪を装備時、1回あたりの蓄積値が増加する仕様とする

上記の仮定の下で、知りたいのは以下のことです。

  • 聖指輪による蓄積値の増加は、シールドバッシュ1回の蓄積値と比較してどれくらいか?

例えば聖指輪1個でシールドバッシュ1回と同じ蓄積値が増えるとすれば、スタンに必要なバッシュ回数は純粋に半減することが予想されます。実際のデータを見ればそうはなっていないので、そこまで蓄積値は増えないことが分かります。「じゃあどれくらいなの?」というのは自然な疑問です。

もしこの値が具体的に分かれば、聖指輪を2個、3個装備したときのバッシュ回数を導くことができるかもしれません。まあ実際作ってみてバッシュ撃ちまくれば分かるのですが、古今東西スキル書も非常に貴重なものですので、事前にどれくらいの効果が期待できるのかを検証してからでも遅くはないというものです。

というわけで、以下に調査方法を詳しく見ていきます。とその前に、いくつかの文字を用いて数式を解く必要があるので、文字を定義しておきます。

文字(と数値)の定義

  • y_n :ゼニスの n 回目のスタンに対する耐久値
  • x :スキルマ聖指輪1個あたりの増加蓄積値
  • 100 :シールドバッシュ1回あたりの蓄積値

「いやいや、『シールドバッシュ1回あたりの蓄積値』も文字でおくべきだ!」と思われる方もいるかもしれません。しかし、これを100とおいても一般性を失いません。例えばこの値を b とおいたとして、最終的に求めたいのは x=kb となる k となります。つまり b の値は問題ではなく、比の値が問題となるため、文字を減らしてもよいのです。(しかも実際の値は蟹のプログラマでなければ分かりません)

というわけで、このように文字及び数値を定義したとき、私達は x の値がどれくらいかを知ることができれば目的が達成されます。ちなみに y_n もほとんどの場合で正確な値を知ることはできません。それはすぐに説明します!

x (聖指輪の蓄積値)の導出方法

それではいよいよ計算によって x を求めてみます。

いろいろ試行錯誤はしたのですが、結局ただ計算をしただけなので、必要なものだけを紹介したいと思います。前述のZXさんと普賢さんのデータのうち、必要なものは以下のデータで、「ゼニスの3回目のスタンに必要なバッシュ回数」と「ゼニスの4回目のスタンに必要なバッシュ回数」です。

  • 3回目のスタン…指輪0個:9回、指輪1個:6回、指輪2個:5回
  • 4回目のスタン…指輪0個:?、指輪1個:10回、指輪2個:9回

ちょっと見づらく申し訳ないですが、上記のデータから x の導出が可能です。

3回目のスタンに関するデータから分かること

いきなりですが、以下を立式することができます。

  •  8 \times 100 \lt y_3 \leq 9 \times 100
  •  5(100+x) \lt y_3 \leq 6(100+x)
  •  4(100+2x) \lt y_3 \leq 5(100+2x)

上から順に、指輪0個、1個、2個のバッシュ回数から立てた式です。一番分かりやすいのは最初の式ですが、バッシュ8回目でスタンしなかったが、9回目でスタンした、ということなので、3回目のスタンの耐久値 y_3 は800と900の間にある、ということが分かります。実は等号を含むかどうかが非常に重要となりますので、今回の仮定では y_3 は800より大きく、900以下であるとしています。指輪を装備すると1回あたりの蓄積値が x ずつ増えるため、それぞれで別の式を立てることができます。

で、上記式を解くのですが、不等式なので xy_3 の値がただ一つに決まるわけではなく、範囲を求めることに留まります。

手で解くのもまあできなくはないのですが、世の中大変便利なものがございまして、数式をぽいぽいっと以下のサイトに打ち込めば、xy_3 のとり得る値の範囲を図示してくれます。

f:id:siratama_z:20191220021124g:plain

3回目のスタンに関する不等式を図示したもの

ja.wolframalpha.com

ここで注目すべきは、\frac{100}{3} \leq x \lt 60 が求められることです。(一応手計算でも求めています)

実はバッシュ回数が少ないデータでは、この範囲が全然狭まらず、トリビアルな結果となってしまいます。このように範囲が求まる例は珍しく、これで x のとり得る最小値と最大値っぽいもの(等号は含まないため、っぽいものとぼかしておきます)が求まりました。

4回目のスタンに関するデータから分かること

3回目のスタンに関するデータでも十分な結果が得られましたが、さらに4回目のスタンのデータがあることが非常に素晴らしいです。先人に敬意を…

ただし、指輪が0個のときの必要バッシュ回数のデータがありません。それでも範囲は絞ることができます。

  •  9(100+x) \lt y_4 \leq 10(100+x)
  •  8(100+2x) \lt y_4 \leq 9(100+2x)

例によってこれをWolframにぶち込んでやると、以下のグラフを得ます。

f:id:siratama_z:20191220022650g:plain

4回目のスタンから分かる範囲

ja.wolframalpha.com

このグラフは何を表しているのかといえば、0 \lt x \lt \frac{100}{3} であるということです。

 

ん?

 

結論

以上より、次の2式が得られたことになります。

  • \frac{100}{3} \leq x \lt 60
  • 0 \lt x \lt \frac{100}{3}

この2式を同時に満たす x は存在しないため、この理論には誤りがあることが分かりました…

予定では「聖指輪1個あたりバッシュ\frac{1}{3} 回分の蓄積値が増加する!!!!」と言うつもりだったのですが、言うつもりだったのですが(大切な事なので)、ちょっと怪しい結論になってしまいました。

得られた結果から考える

うーん…かなりどんぴしゃでいい結果が得られると思ったのですが、等号の有無によってありえない結果を導いてしまいました。

実際このようなことは起こり得るとは思います、というのはアプリの実装はいわゆる無限小数は扱えないため、どこかで切り捨てあるいは切り上げを行っている可能性があります。(蟹の他のゲームはそうでした) そうなれば、境界値でこのような問題が発生する可能性はなくはないと思いますが、これ以上は踏み込まないでおきます。

後でドヤ顏するためのsiratama予想

この結果が将来正しかった、あるいはほとんど正しかったと言われるために、以下の予想を立てておきます。

  • 聖指輪を3個装備したとき、ゼニスのバッシュ回数は「(1または2)-2-4-7」である
  • 聖指輪無しのゼニスの4回目スタンの必要バッシュ回数は14回である

…それくらいしか予想できませんでした…いつか神が現れることを信じて!!

 

最後までお読みいただきありがとうございました。