期待値の理想と現実
■へたくそな前振り
期待値ってのがある。ざっくり言うと、「サイコロ4個振って出た目の合計って大体14だよね」の14。確率の関わるような物事を理解する助けになったりしてくれる。
で、例えばMaster Of Epicというゲームがあって、RPGだから攻撃ってのがあって、攻撃には凄く大雑把に言うと命中率とダメージがある。命中率が100%でも0%でもない場合、攻撃した時に何ダメージ与えられるかは、攻撃してみるまで分からない。でも、期待値を使えば大まかにアタリをつけることができる。つまり、命中率が50%でダメージが100なら、1回の攻撃毎に50のダメージが与えられると期待することができる。
ちなみに、命中率が100%でダメージが50でも、ダメージの期待値は50。
「そっか、命中率50%でダメージ100の攻撃も、命中率100%でダメージ50の攻撃も強さはおんなじなんだ!」
………………。
…………。
……実際、どうなんだろ。
以下は、そんなどうでもいい事を疑問に思った一人の酔拳聖の戦いの記録である。
■仮想ゲームで検証
前述の結論が合っているかどうかは状況による。そこで、なんとなくMoEでの近接タイマン対人戦にちょっと似てる、かつ凄く単純化された以下のようなゲームで検証を行なう。
- 2人のキャラクターによる対戦
- 各キャラクターは「生命力」「回復力」「攻撃力」「命中率」のパラメータを持つ
- 戦闘はターン制で同時行動
- ターン毎に、両キャラクターは同時に攻撃の命中判定を行なう
- 攻撃が命中する場合、攻撃力*[0.9〜1.1]のダメージを相手の生命力に与える
- ダメージ計算を行なった結果、片方の生命力のみが0以下になった場合、もう片方の勝利となる
- どちらの生命力も0超残った場合、回復力に等しい値だけ生命力が回復する(ただし初期生命力を超えない)
- 決着がつくまで命中判定以下を繰り返す
この条件で、両者の生命力・回復力を固定し、命中率が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敗 |
■考察
全体的に、命中率が低いほど、ダメージ期待値が低くても良い勝負になっている。逆に言うと、ダメージ期待値を目安に攻撃力を調整すると命中率が低いキャラの圧勝になってしまう。
どうしてこうなるのかといえば、「両者の生命力が等しい場合、攻撃力が高いほど『トドメまであと一発、になるために与えなければならないダメージ』が少ないから」というのが大きいと思われる。
■まとめ
期待値は、確かに「見做し値」として有効ではあるけれど、事例によっては単純に適用しても妥当な結論や推測は得られないよ、というお話。
■雑感
あー、そういえばうちの酔拳聖は回避高いけど攻撃力超低かったわー、これは勝てないわー(違