FC2ブログ

記事一覧

H=B+D ―― 基本中の基本


前回の記事では、「数字の上で強いポケモン」が最も強いと明言しました。

では、「数字の上で強い」とはどういうことでしょうか? 前回は実質能力値の合計だけを見てみましたが、もちろん現実にはそんな単純には決まりません。合計だけで決まるのならば振り方などどうでもいいという話にもなりかねませんし、素早さが1000で他がオール10のポケモンが弱いことは誰の目にも明らかです。

「効率的な能力値」というのは確かに存在します。もちろんなかなか理論通りには決まらないのですが、ある程度妥当性を持ったモデルを構築した上で定量的な議論をすることは可能です。
これからしばらくは、さしあたり「効率的な振り方」というものに関して考察して行こうと思います。主に数学の話になるので記号や数式が入り乱れますが、なるべく高校生数学レベルに収めようと努力はします。苦手な人は結論だけ読んでくれても構いません。



今回の記事では、ポケモンをある程度やりこんでいる人ならば誰でも知っている理論「H=B+D」について考察します。

知らない人のために説明すると、「ポケモンの耐久値を振り分ける際、H(H)=B(防御)+D(特防)に近付くほど耐久値の効率が良くなる」という理論です。ほとんどのポケモンがBDに振る前にHに極振りするのは、Hに極振りしてもB+Dの方が高くなるからです。逆にHが極端に高いカビゴンやハリテヤマなんかはHに振らずにBDの方に振りますね。
ほとんどの人が何となくの理屈は分かっていると思いますが、きちんと数学的な証明をしろといわれると困る人も多いのではないでしょうか? 

ここから先の話をするに触れておいた方がいいことも多いため、まずは1番簡単なこのセオリーの証明から始めましょう。

まず、「耐久指数」の話をします。概念自体は単純で、定義を述べますと、

物理耐久指数=H(HP)×B(防御)  特殊耐久指数=H(HP)×D(特防)

となります。
これはポケモンの耐久について考える上で非常に重要な概念です。というのも、ポケモンの受けるダメージというのは、そのポケモンの耐久値(防御、特防)に反比例するからです。
言い換えた場合、物理攻撃の場合は、相手の攻撃の火力をX(Xは技の威力、相性、攻撃力によって決まる)とすると、

ポケモンの受けるダメージ=X/B

となります。これがHPに達した際にポケモンが倒れるため、

H=X/B ⇒ X=H×B

となった際にポケモンは瀕死になると言い変えられます。「そのポケモンを倒すのに必要となる火力の数値が高い=そのポケモンの耐久力が高い」なので、基本的にポケモンの耐久力を考える際に問題となるのはこのH×B(D)の値ということになります。


ここで、BDの比率についてはひとまずおいて考えるとします。BDのどちらを上げた方がいいか、という議論についてはここでは取り扱いません。ただし、ここで、当たり前の話ですが、物理耐久指数をb、特殊耐久指数をdとすると、

b:d=H×B:H×D=B:D

となることはすぐに分かります。
すなわち、HやBやDの実数値を変えても、B:Dが同じならば物理耐久指数:特殊耐久指数も同じになる、ということが証明されます。

さて、ここで、

Y=H+B+D

として固定します。これは実際のポケモンの振り方に即した仮定で、耐久値に振り分けられる努力値が決まっていれば、振り方によらず耐久の実数値の合計も決まりますね。

このとき、

B:D=1:k

とした場合、

D=kB

です。このときに物理耐久指数bは、

b=H×B
 =(Y-B-kB)×B
 =-(1+k)B^2+YB
 =-(1+k)((B^2-YB/(1+k))
 =-(1+k)(B-Y/2(1+k))^2+Y^2/4(1+k)

となります。これは単純な二次関数の問題で、

B=Y/(2(1+k))

でbは最大となります。このとき、

b:d=B:D=1:k
d=kb

なので、bが最大となるとき、dも最大となります。
また、

D=kB=kY/(2(1+k))
B+D=Y/(2(1+k))+kY/(2(1+k))=Y/2
Y=H+B+Dなので、
H=Y-(B+D)=Y/2

よって、

b、dが最大となるとき、H=Y/2=B+D

ここまでの前提を踏まえてまとめると、

B:D=1:kとすると、任意のkについて、H=B+Dとなるとき、物理耐久指数b、特殊耐久指数dともに最大となる。

ことが証明されました。
ここまでの議論は、B:Dの比率を表す数kによらず成立します。すなわち、自由に能力値を振り分けられるのならば、B:Dの比率をどのように設定する場合であってもH=B+Dの法則は守った方が効率的なのです。

しかし現実には自由に振り分けることはできません。何故なら、元々の種族値が決まっており、残念ながらマイナスの努力値を振ることも252を超えた努力値を振ることもは不可能だからです。HPに極振りしてもB+Dの値には届かないようなポケモンがほとんどです。これが実現できるのは、せいぜいがランターンやラプラスくらいでしょう。


lanturn.gif       lapras.gif


ランターンのように、この配分を実現できるポケモンの場合はこれでいいとします。では、元の種族値の制約によってこの配分が実現できないポケモン――例えば、ニンフィアの場合はどうすればよいのでしょうか? また、ランターンのようなポケモンにおいても、BDの比率はどのように設定すればいいのかについても数学的に導き出せないのでしょうか?

sylveon.gif



実は、これらについても、ある仮定の下では数学的な解が存在します。次回はこの理論について書こうと思います。
スポンサーサイト



コメント

No title

なぜ B=Y/(2(1+k)) の時に物理耐久が最大になるのですか?

Re: No title

>>なぜ B=Y/(2(1+k)) の時に物理耐久が最大になるのですか?

なぜ、といわれますと、「上に凸の二次関数は極点で最大値を取るから」という説明しかできませんが……
二次関数が分からないのではなくそもそも何を証明したのかがよく分からないという話なら、 http://firefly1987.blog.fc2.com/blog-entry-17.html で内容を少し補足しています。

No title

> HPに極振りしてもB+Dの値には届かないようなポケモンがほとんど
オニゴーリをはじめとして確かにそうですよね。
ではなぜentry-5では
> 大半のポケモンの場合は「B=Dになるまで能力の低い方に振って残りをHPに振る」という形にしかなりません
と答えているのですか?

Re: No title

>> HPに極振りしてもB+Dの値には届かないようなポケモンがほとんど
>オニゴーリをはじめとして確かにそうですよね。
>ではなぜentry-5では
>> 大半のポケモンの場合は「B=Dになるまで能力の低い方に振って残りをHPに振る」という形にしかなりません
>と答えているのですか?

それはコメント欄を読んでください。
「その想定(常に物理耐久指数か特殊耐久指数のどちらか低い方を突かれるという想定)をした場合、B=Dになるまで能力の低い方に振って残りをHPに振る」です。
コメントで提案された「常に物理耐久指数か特殊耐久指数のどちらか低い方を突かれる」という仮定に意味がないということを示すために「その想定をすると非効率的な振り方をすることになる」といっているんです。
「B=Dになるまで能力の低い方に振って残りをHPに振る」というのを明らかに効率が悪い振り方だと述べています。

Re: No title

>>その想定で「H=2B-2Dが理想」と書かれていますがH=B=Dの間違いですよね

間違いではありません。
例えば耐久のH+B+Dが300のポケモンがいたとして、H=150,B=D=75ならHBとHDはともに11250ですが、H=B=D=100ならばHBとHDはともに10000ですから前者の方が効率がいいです。
さすがにこのレベルのことは先に自分で考えてからコメントしてください。

コメントの投稿

非公開コメント