【ゲーム×幾何分布】確率分布・期待値に基づくポケモンの連続技に関する考察

確率分布や期待値の計算例に用いるにあたって、ポケモンの連続技は適した題材であると思われましたので、具体的な期待値の計算や考察などを取りまとめました。ポケモンの連続技は主に幾何分布の観点から考えると理解しやすいので、幾何分布を中心に取り扱いを行いました。

・ゲーム × 統計 まとめ
https://www.hello-statisticians.com/game_stat

前提の確認

問題設定:ポケモンの連続技の仕様

ポケモンの連続技の仕様は大きく分けて下記の$2$つがあります。

・①命中判定後に命中回数の判定がある場合
・②1回ごとに命中判定がある場合

「ダブルアタック」や「すいりゅうれんだ」のように攻撃回数が固定であるものもありますが、確率的な取り扱いがシンプルなのでここでは省略しました。①は「おうふくビンタ」や「タネマシンガン」、②は「トリプルキック」や「トリプルアクセル」がそれぞれ該当します。

①は$2$〜$5$回命中の場合は$2$回と$3$回が$\displaystyle \frac{1}{3}$、$4$回と$5$回が$\displaystyle \frac{1}{6}$のように設定されます。

統計的な取り扱いを考えるにあたっては、①は表で確率分布を表せばよく、②は幾何分布を考えれば良いです。各技と関連する期待値に関しては次節で取り扱いを行います。

幾何分布の概要

下記で詳しく取り扱いました。

連続技と関連する期待値

おうふくビンタ・タネマシンガン etc

「おうふくビンタ」や「タネマシンガン」の命中回数を確率変数$X$で表すと、下記のような確率分布を持ちます。

$X$$2$$3$$4$$5$
$p(x)$$\displaystyle \frac{1}{3}$$\displaystyle \frac{1}{3}$$\displaystyle \frac{1}{6}$$\displaystyle \frac{1}{6}$

このとき技の当たる回数の期待値$E[X]$は下記のように計算することができます。
$$
\large
\begin{align}
E[X] &= 2 \cdot \frac{1}{3} + 3 \cdot \frac{1}{3} + 4 \cdot \frac{1}{6} + 5 \cdot \frac{1}{6} \\
&= \frac{2 \cdot 2 + 3 \cdot 2 + 4 + 5}{6} \\
&= \frac{19}{6} = 3.16 \cdots
\end{align}
$$

上記より、「おうふくビンタ」や「タネマシンガン」が命中する期待値は$3.16 \cdots$であると考えることができます。

また、連続技は技の威力をポケモンの特性と合わせて計算する必要があります。具体的には「$1$回あたりの威力が$1.5$倍になるテクニシャン」と「必ず$5$回当たるスキルリンク」のそれぞれの期待値を計算する場合などがあります。

技の威力を定数$c$とおくとき、それぞれの威力の期待値をテクニシャン$E[Y_t]$、スキルリンク$E[Y_s]$とおくと、それぞれ期待値は下記のように計算できます。
$$
\large
\begin{align}
E[Y_t] &= c \times \frac{19}{6} \times \frac{3}{2} \\
&= \frac{19c}{4} \\
E[Y_s] &= 5c = \frac{20c}{4}
\end{align}
$$

上記より、$\displaystyle E[Y_s]-E[Y_t] = \frac{c}{4}$なので、技$1$回あたりが$20$のときに技の威力の期待値が$5$変わることが計算できます。

トリプルキック・トリプルアクセル

「トリプルキック」や「トリプルアクセル」は$1$回ごとに命中判定がある技であり、表す確率変数の取り得る値に上限がある場合の幾何分布であると考えることができます。$1$回あたりの外れる確率を$p$、当たる回数の確率変数を$X$とおくと、確率関数$p(x)$は下記のように表すことができます。
$$
\large
\begin{align}
p(x) &= p(1-p)^{x}, \quad x=0,1,2 \\
p(3) &= 1 – \sum_{x=0}^{2} p(x)
\end{align}
$$

上記に「トリプルキック」や「トリプルアクセル」の$p=0.1, 1-p=0.9$を代入することで下記のような確率分布の表を得ることができます。

$X$$0$$1$$2$$3$
$p(x)$$0.1$$0.09$$0.081$$0.729$

上記より、$3$回当たる確率が$72.9$%であることが確認できます。また、「トリプルキック」や「トリプルアクセル」の威力は$1$回目が$20$、$2$回目が$40$、$3$回目が$60$であるので、技の威力の期待値を$E[Y]$とおくと、$E[Y]$は下記のように計算できます。
$$
\large
\begin{align}
E[Y] &= 20 \times 0.09 + (20+40) \times 0.081 + (20+40+60) \times 0.729 \\
&= 94.14
\end{align}
$$

ねずみざん

「ねずみざん」は「トリプルキック」や「トリプルアクセル」と同様に$1$回あたりに命中判定のある技ですが、上限が$10$回なので、取り扱いがやや難しくなります。

import numpy as np

p = 0.1

prob = np.zeros(10+1)
prob[0] = p

for i in range(9):
    prob[i+1] = prob[i]*(1-p)
prob[-1] = 1.-np.sum(prob[:-1])

for i in range(11):
    print("Prob {} Hit: {:.3}".format(i,prob[i]))

・実行結果

Prob 0 Hit: 0.1
Prob 1 Hit: 0.09
Prob 2 Hit: 0.081
Prob 3 Hit: 0.0729
Prob 4 Hit: 0.0656
Prob 5 Hit: 0.059
Prob 6 Hit: 0.0531
Prob 7 Hit: 0.0478
Prob 8 Hit: 0.043
Prob 9 Hit: 0.0387
Prob 10 Hit: 0.349

上記の結果を表にまとめると下記のように表すことができます。

$X$$0$$1$$2$$3$$4$$5$$6$$7$$8$$9$$10$
$p(x)$$0.1$ $0.09$$0.081$$0.0729$$0.0656$$0.059$$0.0531$$0.0478$$0.043$$0.0387$$0.349$

また、$1$回あたりの威力が$20$であるので技威力の期待値は下記のように計算できます。

power = 20
num_attack = np.arange(0,11,1)
print(np.sum(power * num_attack * prob))

・実行結果

117.2...