クリティカルを含んだ平均与ダメの計算式1

※この記事は,レジェンド以前に書かれた記事です.レジェンド後に通用する場合は十分ご注意ください※

さてさて,ようやくここまでたどり着きました.

確殺数の算出には最小与ダメだけがあれば良いのですが,平均殺数を考えるには平均与ダメも必要です.BB前の聖魔はクリティカルのことを考える必要はなかったと思いますが,今ではホーリーフォーカスのお陰でクリティカルを無視しては狩りを考えられなくなっています.

ところで,【確殺数】という用語ですが,次郎は当たり前の顔をして使っていますが,通じますでしょうか?

一発で確実に敵を倒せることを,一確と言います(これは次郎がメイポを始める前から広く普及していた用語です).

これを視点を変えて,「自分は,○○の敵を一確で倒せる」ということを「自分は○○の敵の確殺数は1だ」ということにします.二確であれば,「確殺数は2」ということです.計算をする際に,一確なら1,二確なら2という数値を指して,【確殺数】と言います.

確殺数という概念は分析屋(アナライザー)には必須です.でも,そもそもメイポのゲーマーの内でアナライザーそのものが決定的に少数ですので,他のメイポサイトではあまり見かけない用語だとは思いますが,別に次郎が世界で初めて導入した概念ではありません.アナライザーには必須の概念ですので,次郎も必要に迫られて勝手に考案しましたけど,ググれば次郎以前にも確殺数という用語を使っている人はいます.先駆者達に敬意を表して,そこんところは念を押しておきます.

さて,クリティカルを含んだ平均与ダメについて,話をまとめてしまいましょう.

熟練度と平均攻撃力」の記事では,火力といて話をしましたが,実際に我々が測定できるものは火力ではなく与ダメです.与ダメって何?と訊かれたこともあるので,説明しておきますが,被ダメの反対です.攻撃してmobに与えた(る)ダメージです.通常,単にダメージと呼ばれています.が,被ダメと明確に区別するために与ダメとします.

今,攻撃力と与ダメの関係は「『当たるかな』プロジェクト~防御率編1」ではっきりさせましたので,mobと自分の攻撃が決まれば,攻撃力と与ダメは比例関係にあることが分かっています.なので,熟練度と与ダメの関係も,熟練度と攻撃力の関係をそのまま流用することが可能です.

そこで,

  • 最小与ダメ = 最大与ダメ × 熟練度

が言えます.ただし,これはノーマル=非クリティカルの与ダメの場合です.

平均与ダメは

  • 平均与ダメ = 最大与ダメ × (100 + 熟練度)/200

となります.熟練度は%で与えられますので,100で割らなければなりませんし,平均なので足して2で割りますから,都合,200で割ることになります.

通常理論屋は,思考の本質とは無関係な「100で割る」という操作が式に混入することを嫌って熟練度を%で表記しません.熟練度が80%であれば,それは0.8のことだと考えます.そうすると,係数部分が

(1 + 熟練度)/2

となり,物事の本質だけを率直に表現できるからです.理論屋にとっての数式は,自分の考えや思考を表現するものですので,言いたいことがすっきり伝わる方が良いのです.

一方,実務屋にとっての数式は,目的の計算結果を得るためのレシピであり手順書です.数式は正確な計算手順を分かり安く表現したものでなければなりません.なので,熟練度が0.8というよりも80%と言ったほうが馴染みがあるのなら,80%と表記しますし,その結果,数式上で100で割ったり掛けたりという操作が入っても気にしません.何を表現したいかよりも,誰でも間違いなく結果を算出できる手順書であること,そこを重視します.(補足1

さて,クリティカルが発生した場合を考えます.

クリティカルが発生した場合の与ダメの計算は以下の手順で進むはずです.もしもこの手順ではなくても,最終的にこの手順で進んだのと同じ結果になるような手順で進むはずです.

  1. 最大与ダメを計算する.
  2. 熟練度~100%の間で(一様)乱数を出す.
  3. その乱数を最大与ダメに掛けて,与ダメを算出する.
  4. クリティカルが発生するかどうか,乱数で判定する.
  5. 発生した場合,クリティカル最小倍率~クリティカル最大倍率の間で(一様)乱数を出す.
  6. 先に計算してあった与ダメにクリティカル倍率を掛けて,(クリティカル)与ダメを算出する.

クリティカルが発生すると,与ダメがある倍率で増加します.この倍率は一定ではなく,ノーマル時の与ダメと同様に一定の幅でバラツキます.クリティカル発生時の最小倍率の基本値は1.2倍,最大倍率の基本値は1.5倍となっています(MapleStory wiki*さんの該当ページ).ただし,職によっては,この基本値を修正するようスキルがありますので,自分のクリティカル倍率の幅がどうなっているのかは,各自調べなければなりません.

ちなみに聖魔の場合,倍率を基本値から変えるスキルが存在しないので,基本値のままです.

この手順でクリティカル与ダメが算出される場合,

  • クリティカル最大与ダメ = 最大与ダメ × クリティカル最大倍率
  • クリティカル最小与ダメ = 最小与ダメ × クリティカル最小倍率

となります.

ただし,実際の測定で,これらクリティカルの最大・最小与ダメを観測することは,実は結構大変です.ノーマルの与ダメは最小値から最大値まで一様に分布していましたが,クリティカルはそうじゃありません.二回乱数を使うことで,範囲の端っこの事象は起こり難く,中心の事象が起り易いような分布になるからです.

ノーマル与ダメの最小値は,サンプル数が100個もあれば,だいたい1%の精度で観測できます(これは理論値ではなくて,次郎の膨大な観測経験からの概算推定値).しかし,クリティカル最小値を観測するには,以下のハードルを突破しなければなりません.

  1. ノーマル与ダメが最小値で,
  2. しかもクリティカルが発生し,
  3. さらにクリティカル倍率が最小倍率

だいたい,ノーマル与ダメの最小値と最大値を一定の精度で観測するために必要なサンプル数をN個だとすると,クリティカル与ダメの最小値と最大値を同程度の精度で観測するためには,N×N=N2個のサンプルが必要になります.Nが100個だとすると,10,000個のサンプルが必要だってことです.

やってらんねぇ~

まあ,非現実的な話ですよね.1,000個くらいならやっちゃう人もいるでしょうけどねぇ.

そこで,クリティカルの最大与ダメと最小与ダメを観測して実証するのは諦めます.その代わり,クリティカルの平均与ダメを求めて,間接的にクリティカルの最大倍率と最小倍率が反映していることを実証します.

クリティカルが発生した場合,与ダメは一様分布ではなくなりますが,大きい方小さい方どちらかに偏ることはなく,対象な分布は維持されます.しかも,中心ほど発生確率が高いので,平均値は良い精度で得られるようになります.

さて,ちょいと数式をいじるので,値の記号化をします.

  • DNmax : ノーマル最大与ダメ
  • DNmin : ノーマル最小与ダメ
  • k : 熟練度
  • DCmax : クリティカル最大与ダメ
  • DCmin : クリティカル最小与ダメ
  • DCavg : クリティカル平均与ダメ
  • kCmax : クリティカル最大倍率
  • kCmin : クリティカル最大倍率

では,クリティカル平均与ダメを求めてみましょう.平均与ダメは最大値と最小値の平均で算出できますので,

DCavg = ( DCmax + DCmin ) /2

D_{C_{avg}} = ( D_{C_{max}} + D_{C_{min}} ) /2

ここで,

  • DCmax = kCmax × DNmax
  • DCmin = kCmin × DNmin

ですから,

DCavg = ( kCmax × DNmax + kCmin × DNmin ) /2

D_{C_{avg}} = ( k_{C_{max}} D_{N_{max}} + k_{C_{min}} D_{N_{min}} ) / 2

となります.まあ,これまでの話を単に記号化しただけですけどね.

さらに,

  • DNmin = k × DNmax

ですから,

DCavg = ( kCmax × DNmax + kCmin × k × DNmax ) /2

D_{C_{avg}}=(k_{C_{max}}D_{N_{max}} + k_{C_{min}} k D_{N_{max}} ) / 2

これを整理して,

DCavg = ( kCmax + kCmin × k ) × DNmax /2

DCavg / DNmax = ( kCmax + kCmin × k )/2

D_{C_{avg}}=(k_{C_{max}}+k_{C_{min}}k) D_{N_{max}}/2

D_{C_{avg}}/D_{N_{max}}=(k_{C_{max}}+k_{C_{min}}k)/2

最後の式の左辺は,クリティカルの平均与ダメをノーマルの最大与ダメで割ったものです.右辺は,クリティカルの最大・最小倍率と熟練度から計算できる値です.この両辺が合致すれば,ここまでの議論が正しく狩りに反映されているという裏付けになります.

この実証をおこなうべく,今回は助っ人に応援を頼みました.謎の未確認生物(Unidentified Mysterious Animal),UMAさんです.

サブローとはレベルも火力も熟練度もクリティカル倍率も違うUMAさんとサブローの二人の与ダメデータを活用します.

ただし,ちょっとした問題が発生しています.

UMAさんが集めたデータでは熟練度がおかしな値となってしまい,最後の計算式がどうにも合致しないのです.

次郎がデータを分析したところ,ノーマル与ダメのデータ中に,明らかに異常に小さいデータが混入しています.でも,UMAさんに確認したところ,転記ミスではなく,確かにその値がSSに残っているとのこと.なので,その値が観測されたことは疑いの余地がありません.

  1. 途中で魂が切れて火力が減った
  2. スキルかけ直しが遅れてバフ切れを起こした

などの理由も考えられますが,どちらの可能性も低いというのがUMAさんの見解です.単純に何かの間違いだと決めつけられない状況です.

次回,実測値を使った実証に進みますが,そういう難問を抱えている状況であることは,先に報告しておきます.

 

そして,その実証を経たうえで,トータルの平均与ダメは,クリティカル発生率を k_C として,以下の式で計算できると言えるようになります.

平均与ダメ = ( DCavg × kC ) + ( DNavg × ( 1 - kC ) )

確殺数を知るだけなら最小与ダメがあれば良いのですが,平均与ダメがあれば平均殺数が出てきますので,確殺数と併せて実用的な情報になるはずです.

まだ先は長いですけど,ちょっと一山超えられそうですね.


【補足1】

とはいえ,電卓には「%」キーが付いているものもあり(100均で買うような電卓は除く),

[1][0][0][×][8][0][%][=]

と電卓を叩くと,80とちゃんと計算してくれるものが多いですね.だから,別に熟練度を%表示にしなくても,計算手順書としては問題がないってことでもありますけど,%が入ったらとたんに計算が難しく見えるという大人も一定数存在するのは確かです.

広告

コメント / トラックバック1件 to “クリティカルを含んだ平均与ダメの計算式1”

  1. クリティカルを含んだ平均与ダメの計算式2 Says:

    […] さてさて,前回「クリティカルを含んだ平均与ダメの計算式1」では,理論式を誘導しました.[…]


コメントを書く:匿名のコメントも歓迎しますが,名前欄が空欄だと自動的に承認待ちになってしまいます.名前欄には,なるべく文字を入れて下さい.

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。