ちなみにネトゲのダメージ計算ってのは、最小・最大・バランスから期待ダメージを求めたいなぁという欲求からきたのだけど、どうしてもどうやって求めたらいいか理解できない。
バランスってのは、%で表わされていて、例えば、バランス80%のとき、最小から最大の間で80%の位置を中心に、ダメージ値の出現確率が正規分布しますよってことらしい (分散は定数?)、最小や最大を超えた場合には最小や最大にまるめこまれてしまう。バランス80%の場合、最大を超えてまるめこまれる確率が結構高いので、実際は 80% の位置の値よりも期待値は低い (というのは直感的にわかる)。
でも期待値の求めかたがわからない…… 最大が出る確率や最小が出る確率はそれぞれ正規分布の密度関数を積分すればわかる。それ以外の場合の期待値が求まればいいんだけど、どうやって求めたらいいかわからない……
あー そうか。ここも積分すればいいのか……あたりまえだ。この区間の期待値を直接求めればいいのか…… (Wikipedia で更めて期待値を調べていて、これも積分で定義されていることを知る)
最小0 最大100 バランス80 を例にすると、
- 0-100 の区間の期待値が 51.39
- 0 の期待値はもちろん 0
- 100 の期待値が 24.44
なので期待値 75 ぐらいになる (境界を考慮してないねこれ)。
バランス 20 だと
- 0-100 の区間の期待値が 23.87
- 0 の期待値はもちろん 0
- 100 の期待値が 0.30
なので期待値 24.27 ぐらい
これ一発で求まる式をどうやって書いたらいいかわからない…… コードにはできそうかなぁ…… 積分ってコードにするとどうなるんだ (ここでまた積分に戻る)
Wikipedia と Grapher で頑張りまくってる…… 頭悪くてもソフトが補助してくれるお…… Grapher は表示領域の調節が超絶しにくかったりエラーが不親切だったりするのを除けば、Mac 標準でついてくるし、数式綺麗にレンダリングしてくれるし、グラフ萌えるしでまじべんりすぎる