雑記

プログラミングの勉強をしたついでに、いつか作りたいダメージ計算機の仕様を考えていました。


能力値を直接入力するタイプ(実在のポケモンでダメージ計算する場合、種族&努力値入力式よりこちらのほうが便利)
威力、タイプ、特殊物理も直接入力式(選択式よりスピーディ)
特性、持ち物等の補正位置が正確(実機と一致)
ダメージ計算結果から何発で倒れるか&何発で何%で倒れるかを表示(最重要)


現在存在する計算機はすべて、「最低ダメージ〜最大ダメージ」という形で表示されるので、実際取りうる値が分かりにくいんですよね。
たとえば、結果が「160〜189」と出たとして、このときすぐにはHP187のポケモンが何%の確率でやられるかは分かりにくいです。


この何%で倒れるかというのがなぜ重要なのか?それは以下の場合を考えると分かりやすいです。
実際に計算してみると、乱数が99だった場合には187、98だった場合185となって、2/16で倒れますが、
結果が「161〜190」にも、2/16の確率で倒れるのです。なぜなら、乱数が99の場合188、乱数が98の場合186だからですね。
ぱっと見、「160〜189」と「161〜190」なら前者のほうが耐える確率が高いだろうと思いがちですが、実は同じなのです。
ということは…この計算においては後者でも同じ結果なわけですから、その分努力値を節約できちゃうわけなんですよね。


ちなみに。確定耐えか乱数耐えかでは全然意味が違うというような話も聞きますが、自分はナンセンスだと思ってます。
1回しか攻撃されない場合は別ですが、2回以上攻撃される場合、最大乱数×2の起こる確率よりもどちらかが急所にあたる確率が高くなるのであまり意味がありません。この話は前に書いたけど。


という感じで、n発耐えを考える場合、何%で倒れるかが努力値振りを極めようと思っている人には超重要なのです(
上で書いたとおり、急所で突破される確率はどうしても減らないわけですから、それと比べて乱数の影響がどれくらいなのかという評価基準は必要ですね。


ただ、「眠る」で受けきるポケモンを考える場合はまた話は違ってきます。2回以上急所が出るみたいなパターンを除けば、4回の攻撃を耐えるポケモンは、寝る直前の急所以外なら何もせずもう一度眠ることで死ぬことは無いわけです。ならば、それ以外で急所が出てもねむるのPPが減るだけで、その急所に意味はあまり無い。ということは、このとき考えるべき「急所で突破される確率」は、寝る直前の攻撃で急所が出る場合のみとなり、4回の攻撃で一回以上急所が出る確率とはまた違う評価基準になります。


どうでもいい豆知識ですが、急所というのは2回分の攻撃と同じだから、受けるダメージのパターンも同じ、みたいなイメージを抱くかもしれませんが違ったりします。
なぜかというと急所一発だと乱数が1回しか絡まないので、最大ダメージが出るのは1/16ですが、
2回分の攻撃だと乱数が2回絡むので、最大ダメージが出るのは最大乱数が2回連続で出た場合の1/256です。


なんかまた確率の話かよ…神経質なやつ…
という感じですが、実はダメージ計算とか超いい加減です。じゃあなんでこんな確率を気にするのかといえば、適当だけど、8割方耐えるからこれでもよくね?という言い訳で努力値振りとかを適当に済ませてしまいたいからだったりw


良いお年を。