見出し画像

【剣盾】異なる威力の技を組み合わせたときのダメージ乱数【仕様考察】

はじめに

 ポケモンのダメージ計算アプリはたくさんの数がありますが、異なる威力の技を組み合わせたときのダメージ乱数を計算してくれるアプリが見当たらなかったため、今回自分で計算してみることにしました。

やりたいことの詳細

 例として、威力100の技Aと威力50の技Bを打ったときのダメージ幅がそれぞれ
A:59.5%~70.0%
B:29.75%~35%
だったとします。このときAの技を打った次のターンにBの技を打ったとして、合計のダメージ幅は
A+B:89.25%~105%
となります。最高乱数では100%を超えているが最低乱数では100%を超えていないため、A+Bはいわゆる「乱数1発」の状態です。このときにA+Bで相手を倒せる確率が今回求めたいものとなります。
 注意点として、これは威力150の技の乱数とは異なるということです。ポケモンの技のダメージは一回ごとに一様乱数から抽選されるため、ダメージを複数回重ねていくとそのダメージ乱数は徐々に正規分布に近づいていきます。しかし、一様乱数2回の加算では完全な正規分布からは異なった形状となっています。

計算手順

 合計のダメージ幅(上記の例では、A+B:89.25%~105%)が完全に一様分布だとしたときの倒せる確率(上記の例では、5/(105-89.25)*100≒31.75%)をPとして、実際に倒せる確率をPの関数としてあらわすことにします。
※これは、Pは手計算ですぐ求まる値で使いやすいからです。
 具体的な計算手順は以下を取りました。

①998個の一様乱数 (0,1] を技の回数(2 or 3)だけ呼び出し、それぞれの平均値を出す。(技の回数が2であれば、一様乱数2個の平均値が998個生成される)
②998個の平均値のうち、値がP以下であるものの個数を数え、998で割る
③上記手順を20回繰り返して、得られた値の平均値を取る

※計算にgoogleスプレッドシートを使った関係上、行数が999までしか作れずこのような手順を取りました。行数を十分大きく取ることが出来れば、恐らく③の手順は必要ありません。

キャプチャ2

計算した結果を上図に示します。正規分布は中央の値が出る確率が最も高いですので、P>0.5においては実際に倒せる確率 > Pとなることがわかります。概算見積もりとしては、P+0.1程度と見ておくとよいかもしれません。

具体例

具体例①
 HB特化ポリゴン2@輝石に対して、C特化眼鏡ジバコイルのボルチェン+陽気ASフェローチェのインファイトを打つ場面を想定します。それぞれのダメージ幅は

ボルチェン:35.9〜42.7%
インファイト:57.3〜68.8%

です。よって、合計のダメージ幅は

合計:93.2~111.5%

です。よって、P=(111.5-100)/(111.5-93.2)≒0.63となります。上記のグラフから技2回におけるP=0.63での実際に倒せる確率を読み取ると、約73%となります。よって、ボルチェン+インファイトのダメージは「乱数1発 73%」となります。

具体例②
 H252ドラパルトに対して、陽気ASフェローチェがトリプルアクセルを打つ場面を想定します。トリプルアクセルは3回攻撃判定のある技ですが、それぞれのダメージ幅は

1回目(威力20):16.4~19.5%
2回目(威力40):31.8~37.9%
3回目(威力60):46.2~55.4%

です。よって、合計のダメージ幅は

合計:94.4~112.8%

です。よって、P=(112.8-100)/(112.8-94.4)≒0.7となります。上記のグラフから技3回におけるP=0.7での実際に倒せる確率を読み取ると、約88%となります。よって、トリプルアクセルのダメージは「乱数1発 88%」となります。

 注意点は以下の4つです。
①技1回あたりのダメージ乱数は連続ではなく、16個の一様乱数から選出されます。上記の計算ではこれは考慮していません。
②急所まで考慮すれば、実際の倒せる確率は若干上記よりも高くなります。
③技の命中率を考慮すると、実際に倒せる確率は上記よりも低くなります。トリプルアクセルの場合3発すべて命中する確率は72.9%ですので、上記の例での実際の確率は0.729*0.88*100=64.152%となります。
④トリプルアクセルを威力120の一回攻撃技として計算すると、ダメージ幅は92.3~109.7%(P=0.5625)となり、3回攻撃技として計算した場合とPの値も含めて結果が変わります。連続技のダメージ計算はこのように注意が必要です。

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