実質攻撃力と耐久力

last update:2007/04/30

「実質攻撃力」、「耐久力」とは造語で、この二つの言葉について以下で説明します。

はじめに / 実質攻撃力と耐久力の定義 / 耐久回数 / 誤差の見積もり

はじめに

ダメージ計算式は小数切捨て処理を無視すると次のようになっています。
ダメージ = { ( レベル・2/5+2 ) ・攻撃or特攻・技の威力/(防御or特防・50)+2 } ・タイプ補正・乱数

注:・は掛け算の記号で×と同じ、/は割り算の記号で÷と同じです。
以下、説明の便宜上、次のように表すことにします。
Dm = { ( Lv・2/5+2 ) ・At・Pw/(De・50)+2 } ・Ty・Rm

Dm : ダメージ  Lv : レベル  At : 攻撃or特攻  Pw : 技の威力  De : 防御or特防
Ty : タイプ補正  Rm : 乱数

実質攻撃力と耐久力の定義

実質攻撃力

実質攻撃力を次のように定義します。
Z = ( Lv・2/5+2 )・At・Pw・Ta・Rm/50 = C・At・Ta・Rm

Z : 実質攻撃力  Ta : タイプ一致  C = (Lv・2/5+2)・Pw/50
タイプ一致の部分(Ta)はタイプ一致なら1.5、そうでないなら1を入れます。

【計算例】
Lv50のスターミー(特攻167)の場合。
乱数(Rm)0.85〜1を考慮すると、実質攻撃力(Z)はサイコキネシスの場合8431〜9919、10まんボルトの場合5933〜6980となります。

耐久力

耐久力を次のように定義します。
Y = De・MaxHP

Y : 耐久力  MaxHP : 技を受ける側の最大HP
物理攻撃に対応した耐久力を「物理耐久力」、特殊攻撃に対応した耐久力を「特殊耐久力」と呼ぶことにします。

【計算例】
Lv50のラプラス(HP237、防御145、特防115)の場合。
物理耐久力は34365、特殊耐久力は27255となります。

耐久回数

「耐久回数」とは何回相手の攻撃に耐えられるか、あるいは何発で倒せるかを表す数値です。
次のように定義します。
α=Y/(Z・Tc)

α : 耐久回数  Tc : タイプ相性
タイプ相性の部分には、例えば弱点を突いた場合なら2が入ります。等倍の場合は1が入ります。

計算例

例として上記のスターミー、ラプラスの例で説明します。
□Case1:スターミーがラプラスにサイコキネシスで攻撃した時のラプラスの耐久回数は?
乱数として1が振られた場合、耐久回数=27255/9919≒2.75
乱数として0.85が振られた場合、耐久回数=27255/(9919・0.85)≒3.23
となるのでこの場合のラプラスの耐久回数は2.75〜3.23回となります。
□Case2:スターミーがラプラスに10まんボルトで攻撃した時のラプラスの耐久回数は?
乱数として1が振られた場合、耐久回数=27255/(6980・2)≒1.95
乱数として0.85が振られた場合、耐久回数=27255/(6980・2・0.85)≒2.30
となるのでこの場合のラプラスの耐久回数は1.95〜2.30回となります。
【誤差】
ダメージ計算式は実質攻撃力には単純に比例せず、+2の部分があるのでこの考え方だと誤差が生じます。
例えば上のCase1の場合、実際にダメージ計算式から計算すると2.69〜3.20回となりわずかにずれています。
厳密にこのポケモンのこの攻撃には何回耐えると計算したい時はダメージ計算が必要です。
ただ、大雑把に見積もりたい時には、この耐久回数の定義は非常に有効です。

誤差の見積もり

ダメージ計算式を正確に変化させていくことで、どの程度誤差があるかを見ていくことにします。

ダメージ計算式は次のようになっています。
Dm={(Lv・2/5+2)・At・Pw/(De・50)+2}・Ty・Rm=MaxHP/α'
ここでα'は誤差のないときの耐久回数です。

以下、式変形をしていきます。
Dm=(C・At/De+2)・Ty・Rm=MaxHP/α'
両辺にDeを掛けて、
(C・At+2・De)・Ty・Rm=MaxHP・De/α'
YとZを用いて表すと、
Z・Tc+2・De・Ty・Rm=Y/α'
よってα'は
α'=Y/(Z・Tc+2・De・Ty・Rm)=Y/[Z・Tc・{1+2・De/(C・At)}]=α/{1+2・De/(C・At)}
ここで、誤差(=eps)を(α'-α)/αと定義すると、
eps=α'/α-1=1/{1+2・De/(C・At)}-1=-2・De/(C・At)/{1+2・De/(C・At)}
となります。2・De/(C・At)=X(0<X)とすると
eps=-X/(1+X)
となりX→0の極限でeps→0、X→∞の極限でeps→-1となります。
関数epsはX>0の領域でXの増加に従い単調減少するので、Xが増加するに従いepsは0から-1になるように単調減少します。
Lv50の場合は
X=2・De/(C・At)≒4.54・De/(At・Pw)
となります。
この結果よりXが大きい、つまり攻撃or特攻が低く、威力が低く、防御or特防が高い時に誤差が大きくなることが分かります。
つまりXが大きいときは+2の効果がより効いてきます。
また、α'<αなので誤差のないときの耐久回数の方が小さくなります。

例えば攻撃=防御で威力100の技の場合は誤差4.34%、攻撃=防御/2で威力40の技の場合は誤差18.5%となります。
よって、前者では得られた耐久力より4.34%低い値が、後者では18.5%低い値が誤差のないときの耐久回数になっています。