見出し画像

総合耐久指数H(B+D)対HBD/(B+D)はどう違う!?-一次近似のお話-

お久しぶりです。こんにちぴらーーん。ブログとnoteとで記事が分散してきて運用方針に悩み中のぴらんです。

さて、先日TLが耐久指数の議論でにぎわいました。数字好きとしては嬉しい限りです。そんな中少しに気になる記事とやり取りを見かけました。


やりとりを引用しようと思うとどうしてもスクショになりがち

さて、耐久指数としてHBD/(B+D)派を使うべき派だったのですが、H(B+D)でも近い値になると聞くと近似大好きクラブ会員としてはほんとに近い値になるのか、どの程度近いのかを確かめに行かざるを得ません。調べてみたら意外と良い近似だったので今回はその調査レポになります。

というわけで以下本題

要約

総合耐久指数HBD/(B+D)と簡略化した耐久指数H(B+D)の関係について調べ、H(B+D)はB≃Dの時の一次近似になっていることを示しました。また、注意点としてBDの努力値振り分けで破綻する仕組みについて解説し、努力値振り以外の話題では精度良く計算出来ていることを確かめました。

初めに

そもそも総合耐久指数とは

引用の記事でも触れているので軽く扱うのみとします。

ポケモンのダメ―ジは1/Bや1/Dに比例します。物理と特殊のダメージをまとめて指数にしたい時の方法として物理と特殊のダメージが1:1で飛んでくると考えて平均を取ります。つまり↓

$$
平均的なダメージ∝1/B+1/D
$$

↑の平均的なダメージとHPの比を取ったものとして総合耐久指数を定めれば完成です。

$$
総合耐久指数=\frac{H}{\frac1B+\frac1D}
$$

こうやって定めた総合耐久指数は物理と特殊が同程度に飛んでくる時の耐久値の目安として機能します。

ちなみに余談ですが、上の分数を約分して$${総合耐久指数=\frac{HBD}{B+D}}$$の形でもよくつかわれます。個人的な好みとしては逆数の和の形が好きです。

なお、このあたりの話は古くからおこなわれていて遡れるかぎり机上論が強いさんがオリジナルのはずです。


数学のお話:一次近似について

近似のお話をしておきたいです。$${x}$$の難しい関数$${{f(x)}$$を近似して直線で表す近似を一次近似といいます。

$$
y=f(x)\\
↓\\
y=k(x-a)+b  ((a,b)は近似直線と元の関数の接点)
$$

このように導出した直線と元の関数の誤差は$${(x-a)^2}$$に比例する形になり、$${x-a}$$が近いと急速に誤差が小さくなります。これは接線は接点の付近では元の関数と非常に似ていると言い換えることもできます。

接線は接点付近で元の関数と似ている

今回はH(B+D)が総合耐久指数の一次近似になっているかどうかを調べます。

この近似について語るとかなり長く語れるオタクなのですが、今回は本題の方に紙面を割きたいので過去の記事の引用に留めておきます。

別のゲームの時の話ですが、part1では主にこの近似について詳しく説明しているので今回の記事に関連してすんなり読めると思います。

理論

H(B+D)は総合耐久指数の一次近似になっている

さて、イントロで用意した総合耐久指数と一次近似を合わせてみます。BとDの差を$${x}$$と置いて、これが小さい条件で総合耐久指数を一次近似してみましょう。

$$
B-D=x\\
総合耐久指数=\frac{H}{1/B+1/D}=\frac{H}{\frac1{D+x}+\frac1D}\\
↓\\
一次近似の耐久指数=\frac14(Hx+2HD)=\frac14H(B+D)
$$

計算過程

途中式飛ばすと気持ち悪い人もいるかもなので載せておきます

雑に検索して出てきた以下のマクローリン展開でα=-1の時を使います。

上のサイトの結果を応用して以下の公式の形式で使います。

$$
\begin{equation}
\frac{1}{a+x}=\frac1a-\frac{x}{a^2}+O(x^2) 
\end{equation}
$$

これを使って総合耐久指数の式を変形します。

$$
耐久指数=\frac{H}{\frac1{D+x}+\frac1D}\\
=\frac{H}{\frac1D-\frac{x}{D^2}+\frac1D+O(x^2)}     (補足:\frac1{D+x}に(1)の公式使用)\\
=\frac{HD^2}{2D-x+O(x^2)}\\
=HD^2\left(\frac1{2D}+\frac{x}{4D^2}\right)+O(x^2)        (補足:\frac1{2D-x}に(1)の公式使用)\\
=\frac14(2HD+Hx)+O(x^2)\\
=\frac14(H(B+D))+O(x^2)
$$

考察

というわけでH(B+D)はなんとなく物理耐久指数と特殊耐久指数を単に足し算しただけの何も考えていない関数に見えて、HBD/(B+D)を一次近似した近似関数になっていることがわかりました。x=B-Dが小さい時、つまりBとDが同じくらいのポケモンではxの一次までの精度で近似できることがわかります。

ここまででH(B+D)が総合耐久指数の一次近似になっていることがわかったので、H(B+D)のことを1次の耐久指数と呼ぶことにします.

わたし自身の経験的な話で恐縮ですが、xの0次まで近似はダメダメになることが多いのに対してxの1次の精度がある近似は多少xが大きめになったくらいでは実用に足りる精度を維持してくれます。極端に大きいとダメなのでハピラキクレベとかでは危険ですが極端にBD比が崩れてなければ、多少のBD差くらいなら一次の耐久指数を使って良さそうです。後で使える範囲を調べてみます。

注意点:BDの努力値配分には使えない

精度良く計算出来るのであればH(B+D)使えば良さそうに思えますがx=BD差が大きい場合以外にもう一つ大事な注意点があります。総合耐久指数を使用する場面として最も多いのは努力値を振り分ける時だと思いますが、この場合は1次の耐久指数を使うことは出来ないことです。これについて解説します。

H(B+D)がxの1次までの精度を持っているためこれの微分は0次=定数項部分のみが精度を保証できます。裏を返せば定数項が0になるような微分量に関しては精度が保証できない部分が主要項になってしまい、良い近似になりません。


aの割合が大きいと正確だけど、a=0になる問題ではでたらめな部分が主要になる

そして、そのような微分量を使う話題の典型として努力値のBD振り分けの話があります。努力値をBDどっちに振るか考えるには耐久指数のB微分とD微分を比べたいですが、↓の計算のようにこれらの差は定数部分が0になってしまいます。総合耐久指数をTとして微分を計算します。

$$
\frac{\partial T}{\partial B}=\frac{\partial }{\partial B}\frac{HBD}{B+D}\\
=\frac{HD(B+D)-HBD}{(B+D)^2}\\
=\frac{HD^2}{(B+D)^2}\\
\frac{\partial T}{\partial D}=\frac{HB^2}{(B+D)^2}
$$

差は次のようになります。ちなみに微分の差は「Bに1振るのとDに1振るのとでどれだけ耐久指数の伸びが違うか」的意味合いになります。

$$
\frac{\partial T}{\partial B}-\frac{\partial T}{\partial D}=\frac{H(B^2-D^2)}{(B+D)^2}=\frac{H}{B+D}\times (B-D)=\frac{H}{B+D}\times x
$$

つまり$${x}$$に比例で、定数部分が0になります。定数部分しか信頼できないのにそこが0で信頼できる部分の割合が0になる→一次近似は使えないということがわかります。

他の話題であれば定数部分が0になることはあまり起こらないので精度高く計算できることが期待できます。

普通のポケモンはx小さめなのでaが非0ならでたらめ部分の割合は小さい

理論まとめ

  • H(B+D)という指数は正しい指数の一次近似になっていてB-Dが小さいほど正確に近似できる。

  • 一次近似はB=Dを代入した時に正確になるだけでなく、傾きまで正しいのでそこそこ正確。

  • ただし努力値の振り分けには使えない。注意。

実際に計算して確認

前章でBとDが近ければ正確と述べましたが具体的にどれくらいBDが近ければ正確なのでしょうか?具体的なポケモンで計算して精度を比べてみます。

前章で努力値の話題には使えないことを説明したので他の使い方として、ポケモン毎の耐久の違いを見るような場合で計算してみましょう。

ポケモンHOME使用率上位ポケモン+フォロワさんリクエストポケモンの総合耐久指数を比較します。いずれも無振り無補正での比較になります。


ほとんどのポケモンではポケモン毎の違いに比して二つの耐久指数の違いはほぼなく、ウーラオスのBD差でようやく知覚できる程度、大きくずれるといえるのはガチグマハバカミくらい偏ってるポケモンに限ることがわかります。

したがって理論の項で述べたようにほとんどのポケモンについては耐久指数を一次近似の指数で計算して大丈夫と言って良さそうです。(ただし努力値のBD振り分けの話題を除く)

考察

さてこれらを踏まえてH(B+D)を総合耐久指数の代わりとして使える場面を考えましょう。

これを考える上でわかりやすいツイートをふぉろわさんが述べられていたので引用させて貰います。

つまりH(B+D)とする近似そのものは悪くないものの、肝心の努力値振りで使えないのが大きく、H(B+D)で良い場面を考えるのが難しくなっています。また、エクセルやプログラミング言語を使って数値的に計算する場面ではH(B+D)でもHBD/(B+D)でも計算の手間が大きくは変わらないのであえてH(B+D)で計算する必要もないというのが結論になりそうです。

というわけで、H(B+D)は精度自体は見た目ほど悪くないので有用な場面さえ見つければ使って簡単に計算して大丈夫。具体的には暗算や電卓程度で大雑把な目安を知りたい、かつ努力値振り以外の話題で総合耐久指数を使いたい場面があれば、、、といったところかと思われます。

まとめ

  • H(B+D)という指数は正しい指数の一次近似になっていてB-Dが小さいほど正確に近似できる。

  • 一次近似はB=Dを代入した時に正確になるだけでなく、傾きまで正しいのでそこそこ正確。具体的にはパオとかハッサムみたいにB-D=20程度あっても問題なし

  • ただし努力値の振り分けには使えない。注意。

あとがき

いかがでしたか?H(B+D)とか単純に足しただけの指数は数弱しかつかわんやろwwくらいの偏見持っていましたがちゃんと計算してみると意外とまともな近似になっていて面白いなと思ったのでまとめてみました。

Bに振ってもDに振っても同じ耐久になる→この指数ダメやろ、くらいの認識でも実用上は問題ないのですが、今回のように近似の精度を計算して「努力値振りでは精度良く計算できる部分が0になってるからダメなんだな―」みたいなみたいな部分までわかっているとなんとなく人生が豊かになった気分がします。

それでは次の記事でお会いしましょ~~

余談

ハピのBD偏りパないの

この記事が気に入ったらサポートをしてみませんか?