期待値の理想と現実

■へたくそな前振り

期待値ってのがある。ざっくり言うと、「サイコロ4個振って出た目の合計って大体14だよね」の14。確率の関わるような物事を理解する助けになったりしてくれる。
で、例えばMaster Of Epicというゲームがあって、RPGだから攻撃ってのがあって、攻撃には凄く大雑把に言うと命中率とダメージがある。命中率が100%でも0%でもない場合、攻撃した時に何ダメージ与えられるかは、攻撃してみるまで分からない。でも、期待値を使えば大まかにアタリをつけることができる。つまり、命中率が50%でダメージが100なら、1回の攻撃毎に50のダメージが与えられると期待することができる。
ちなみに、命中率が100%でダメージが50でも、ダメージの期待値は50。
「そっか、命中率50%でダメージ100の攻撃も、命中率100%でダメージ50の攻撃も強さはおんなじなんだ!」
………………。
…………。
……実際、どうなんだろ。
以下は、そんなどうでもいい事を疑問に思った一人の酔拳聖の戦いの記録である。

■仮想ゲームで検証

前述の結論が合っているかどうかは状況による。そこで、なんとなくMoEでの近接タイマン対人戦にちょっと似てる、かつ凄く単純化された以下のようなゲームで検証を行なう。

  1. 2人のキャラクターによる対戦
  2. 各キャラクターは「生命力」「回復力」「攻撃力」「命中率」のパラメータを持つ
  3. 戦闘はターン制で同時行動
  4. ターン毎に、両キャラクターは同時に攻撃の命中判定を行なう
  5. 攻撃が命中する場合、攻撃力*[0.9〜1.1]のダメージを相手の生命力に与える
  6. ダメージ計算を行なった結果、片方の生命力のみが0以下になった場合、もう片方の勝利となる
  7. どちらの生命力も0超残った場合、回復力に等しい値だけ生命力が回復する(ただし初期生命力を超えない)
  8. 決着がつくまで命中判定以下を繰り返す

この条件で、両者の生命力・回復力を固定し、命中率が100%のキャラクターに対して、命中率が100%未満のキャラクターを対戦させ、勝敗が拮抗するまで後者の攻撃力を調整していく(但し小数点以下一桁まで)。
命中率に対して、攻撃力いくつで勝敗が拮抗したか≒戦闘力の等しいキャラになったかを見る。

■結果

  生命力 回復力 攻撃力 命中率 ダメージ期待値 勝敗
キャラ0 300 20 50 100% 50 -勝-敗
キャラ1 300 20 54.1 90% 48.7 25620勝25080敗
キャラ2 300 20 60.1 80% 48.1 30214勝29390敗
キャラ3 300 20 67.9 70% 47.5 32346勝32069敗
キャラ4 300 20 78.1 60% 46.9 33760勝33892敗
キャラ5 300 20 92.1 50% 46.1 35357勝34840敗
キャラ6 300 20 112.1 40% 44.8 36192勝36126敗
キャラ7 300 20 144.2 30% 43.3 37171勝37115敗
キャラ8 300 20 196.5 20% 39.3 39527勝39489敗
キャラ9 300 20 310.5 10% 31.1 41683勝41543敗

■考察

全体的に、命中率が低いほど、ダメージ期待値が低くても良い勝負になっている。逆に言うと、ダメージ期待値を目安に攻撃力を調整すると命中率が低いキャラの圧勝になってしまう。
どうしてこうなるのかといえば、「両者の生命力が等しい場合、攻撃力が高いほど『トドメまであと一発、になるために与えなければならないダメージ』が少ないから」というのが大きいと思われる。

■まとめ

期待値は、確かに「見做し値」として有効ではあるけれど、事例によっては単純に適用しても妥当な結論や推測は得られないよ、というお話。

■雑感

あー、そういえばうちの酔拳聖は回避高いけど攻撃力超低かったわー、これは勝てないわー(違