先のブログで確定数を足し算引き算だけで概算する方法を示したが、それの数学的思考を示す。

Lv50戦で、攻撃ステの実値がaのポケモンAが防御ステ実値dのポケモンDにタイプ一致威力110の技で与えるダメージDmgは以下の式で求められる。

Dmg = ((22×110×a) / (50×d) + 2)×1.5 = (363a)/(5d)+3
※実際にはこれにダメージ乱数(0.85~1.00)をかけるが今は1.00とする

ポケモンAがポケモンDを倒すのに必要な攻撃回数nはポケモンDのHPをこのダメージDmgで割ってやればよい。
例によって+3の項は十分無視できるとし、HPをhすると、

n = h/Dmg = h/{(363a)/(5d)} = (5hd)/(363a) … ①

とあるポケモンVのHP、攻撃ステ、防御ステがそれぞれ、p,q,rとする。
この時、ポケモンVはポケモンVを1回の攻撃で倒せるとすると、①式に代入して

n = (5pr)/(363q) = 1 … ②

が成り立つ。②から、①式は以下のように変形できる

n = (5hd)/(363a) = {(5pr)/(363a)}×{(5hd)/(363q)}

この時、①より{(5pr)/(363a)}はポケモンAがポケモンVを倒すまでの攻撃回数を、
{(5hd)/(363q)}はポケモンVがポケモンDを倒すまでの攻撃回数を表す。

つまりこれは、以下の情報が分かっていれば「ポケモンAはポケモンDを何回の攻撃で倒せるか」がわかることを示している。

・ポケモンAはポケモンVをx回の攻撃で倒せる
・ポケモンVはポケモンVを1回の攻撃で倒せる
・ポケモンVはポケモンDをy回の攻撃で倒せる


代表となるポケモンVは②が満たせればなんでもよい。
例えば、ここでは私の嫁のビビヨン(p=156, q=155, r=72)で考える。

ポケモンAがポケモンV(ビビヨン)を倒すのに必要な攻撃回数nAは
nA = {(5pr)/(363a)} = 18720/(121a) … ③

ポケモンV(ビビヨン)がポケモンDを倒すのに必要な攻撃回数nDは
nD = {(5hd)/(363q)} = (hd)/11253 … ④

になる。

要するにある代表ポケモンを1匹定め、それぞれが代表ポケモンに対する攻撃回数nA,nDで火力、耐久指数を種族値の代わりに覚えておけば対戦中に1回の四則演算で必要な攻撃回数を求められるという事だ。

ただ、この時、実数の掛け算が生じる。計算の早い人ならすぐ出来るかも知れないが私はやりたくない。
そこでこれを足し算引き算で表せるように対数を取る。この時の底は、「2の7乗根」とした。
この「2の7乗根」は2乗するとおよそ1.2、3乗するとおよそ1.3、4乗するとおよそ1.5というポケモンで多く使われる数字に近似する特性がある。

上記の式③、④の対数を取り整理するとそれぞれ以下の式⑤、⑥が得られる

log(nA,2^(1/7)) = log(18720/(121a),2^(1/7))=7*log(18720/(121a))/log(2) … ⑤
log(nD,2^(1/7)) = log((hd)/11253,2^(1/7))=7*log((hd)/11253)/log(2) … ⑥

これが評価値となる。
例えばカプ・テテフの場合Cについて無振りの場合150、極振りの場合182になる。
これを上記の式⑤、⑥に代入するとそれぞれ-0.31、1.64という数字が得られる。

これを防御側の値と攻撃側の値を加算して0になれば攻撃回数が1回ということになる。

使用に際して0.5刻み程度で丸めた方がいいかもしれない(-0.31→-0.5、1.64→1.5)
また、この時火力については実値が高いほど小さな数字が出て感覚的ではないので-1をかけた方がよいかもしれない。

ポケモンバトルにおける確定数の新たな概算方法の提案
時間制限があるバトルで、対戦中に相手を倒せるか(または倒されるか)を足し算引き算だけで概算する方法を考えている。

※負値はわかりにくいとの指摘があったのでそのうち調整します

~背景~
従来の種族値ベースの考え方に私は限界を感じている。
対戦中知りたいのは「あと何回の攻撃で相手は倒れるか」「次の攻撃で自分は倒れるか」ではなかろうか。

しかし、これを計算するためには「種族値」→「実値」→「ダメージ」→「割合」「回数」という順で計算しなくてはいけない。あっという間に60秒が過ぎる。

もっと別の指標で対戦時の優劣を表現できないものか。
次の攻撃で倒せるかどうか概算する方法がないか。
できるだけ簡単に。

~概要~
種族値などに代えて、それぞれのポケモン実値から画像の表のように評価値で表す。
(この表の求め方および数学的思考過程については次の記事で詳しく説明する)
例としてWCSルールシーズン3のポケモンTOP5は以下のようになる(0振り~252振り/性格補正なし)。

ウインディ
物理火力:☆-2.0~ ☆0.5
物理耐久:☆4.0~ ☆8.5
特殊火力:☆-2.5~ ☆0.0
特殊耐久:☆4.0~ ☆8.5

ガブリアス
物理火力:☆-0.5~ ☆1.5
物理耐久: ☆6.5~ ☆10.5
特殊火力:☆-4.5~ ☆-1.5
特殊耐久: ☆5.5~ ☆9.5

カプ・コケコ
物理火力:☆-1.5~ ☆1.0
物理耐久:☆3.0~ ☆8.0
特殊火力:☆-3.0~ ☆-0.5
特殊耐久:☆2.0~ ☆7.0

カプ・テテフ
物理火力:☆-4.0~ ☆-1.0
物理耐久:☆2.0~ ☆7.0
特殊火力:☆-0.5~ ☆1.5
特殊耐久:☆5.5~ ☆10.0

カミツルギ
物理火力:☆2.5~ ☆4.0
物理耐久:☆6.0~ ☆10.0
特殊火力:☆-7.0~ ☆-3.5
特殊耐久:☆-5.0~ ☆2.0

残念ながら、どのポケモンがどの程度の評価値なのかは種族値のように覚えなければならない。

この評価値で実際に計算してみる。計算は以下のルールで行う。

ルール①
相手の耐久評価値から、攻撃側の火力評価値を引く。
その時に0以下になれば倒せる事を意味する。


実例でやってみよう。
「カプ・コケコのかみなりで、ウインディを倒せるか」

カプ・コケコの極振りで☆-0.5、対してウインディの特殊耐久は無振りで4.0。
☆4.0から☆-0.5を引いて☆4.5、☆0より大きいので倒せない。

ちなみに割合を知りたい時は、計算結果によって大雑把に以下のようになる
☆0: HPの100%程度
☆1: HPの90%程度
☆2: HPの80%程度
☆3: HPの75%程度
☆4: HPの70%弱程度
☆5: HPの60%程度

また、確定数は引いた結果から以下のようになる。
~☆0 確1
~☆7 確2
~☆11 確3
~☆14 確4

今回は☆4.5なので相手HPを65%程度削って確2と言ったところか。

実際にダメ計すると

攻: カプ・コケコ Lv.50
防: ウインディ Lv.50
ダメージ: 93~109
割合: 56.3%~66%
回数: 確定2発
威力: 110
タイプ: でんき*/特殊
特攻: 147
特防: 100
最大HP: 165

で確かに最高乱数で66%になる。
ダメ―ジ乱数やその他もろもろの倍率は以下のように処理する。全部足し算引き算でできる。

ルール② 倍率計算時
2.0倍(弱点、2段階上昇等):☆7を足す
1.5倍(拘り、輝石、1段階上昇等):☆4を足す
1.3倍(珠等):☆3を足す
1.2倍(プレート等):☆2を足す
1.1倍(性格上昇補正等):☆1を足す
0.9倍(性格下降補正等):☆1を引く
2/3倍(威嚇、タイプ不一致、1段階下降等):☆4を引く
1/2倍(やけど、2段階下降等):☆7を引く


ルール③ 技の威力
120 攻撃側から☆1を足す
110 そのまま
100 攻撃側から☆1を引く
90 攻撃側から☆2を引く
80 攻撃側から☆3を引く
75 攻撃側から☆4を引く


ルール④ ダメージ乱数
低乱数(5%程度):そのまま
中乱数(30%程度):攻撃側から☆0.5を引く
中乱数(60%程度):攻撃側から☆1.0を引く
高乱数(90%程度):攻撃側から☆1.5を引く


実例でやってみよう。
「カプ・テテフがサイコフィールドを張っている。サイコキネシスでカミツルギを倒せるだろうか」

カプ・テテフの極振りで特殊火力は☆1.5、
サイキネは威力90なので☆2つ減らす→☆0.5
サイコフィールドの効果で1.5倍なので☆4つ増やす→☆4.5
半減なので☆7つ減らす→☆-3.5
高乱数で考えたいので☆1.5減らす→☆-5.0

カミツルギの特殊耐久は☆-5.0~☆2.0

カミツルギの特殊耐久が無振りであれば☆-5.0から☆-5.0を引いて☆0。
☆0はピッタリ確1くらいの打点ということ。

ダメ計すると

攻: カプ・テテフ Lv.50
防: カミツルギ Lv.50
ダメージ: 135~159
割合: 100.7%~118.6%
回数: 確定1発
技: サイコキネシス
威力: 135 [サイコ]
タイプ: エスパー*/特殊
特攻: 182
特防: 51
最大HP: 134
相性: ×0.5

丁度確1である。


恐らくこれまでとは全く異なる計算体系で慣れるまで抵抗もあるだろうし、
あくまで概算なのでギリギリの時には誤差を生じる恐れもある。

しかし、実戦では指折り数えることで計算できるので、
種族値ベースでダメ計するよりはよっぽど低負荷なのではなかろうか。