Re: 要望・感想スレッド4 ( No.89 ) |
- 日時: 2013/10/21 00:21
- 名前: SUN
- 参照: http://pokemon-trainer.net/
- >>88 what?さん
わかりにくくて申し訳ないです。 100 - ( ( 80 / 100 ) ^ 2 × ( 0 / 16 × 7 / 8 + 0 / 16 × 1 / 8 ) + ( 80 / 100 ) × ( ( 100 - 80 ) / 100 ) × ( 13 / 16 × 7 / 8 + 0 / 16 × 1 / 8 ) + ( ( 100 - 80 ) / 100 ) × ( 80 / 100 ) × ( 13 / 16 × 7 / 8 + 0 / 16 × 1 / 8 ) + ( ( 100 - 80 ) / 100 ) ^ 2 ) × 100 これが2ターン後の式です。 真ん中の2つの項は1回しか当たってない場合なので通常時に倒せる確率は13/16です。 この方法で立式すると、 ( ( 100 - 80 ) / 100 ) ^ (ターン数) この部分が0になることは絶対にないため、計算結果が100%になることもありません。 nターンに拡張した式を書くと次のようになります。
P(nターン以内に倒せる) = Σ[k=1〜n] {nCk × P(命中)^k × P(命中しない)^(n-k) × P(倒せる | k回命中)} P(倒せる | k回命中) = (k回以内の命中でHPが0になる場合の数) / (16 ^ k)
ここでP(X)は確率、P(X|Y)は条件付き確率、kは攻撃があたった回数、nCkは組み合わせです。
"毎ターン同じ乱数を引く"という仮定は、すなわち"毎ターンのダメージが同じ"だと仮定することと同じです。 『HP>ダメージ×ターン数』という式は、毎ターンのダメージが異なれば使えません。 ダメージが異なるなら『HP>ダメージ@ターン1 + ダメージ@ターン2 + ダメージ@ターン3 + ...』こうならなければなりません。 したがって、what?さんの仮定は私の言う"1ターン目と2ターン目で同じ乱数を引くという仮定"と一致しています。 毎ターンダメージが変わる状況の場合、乱数は16とおりではありません。 16 ^ (ターン数)通りです。 これはサイコロを2回振った時の場合の数が6通りでなく36通りなのと同じです。 正しい値を求めたい場合は、愚直にやるなら16 ^ (ターン数)通り全て、5ターンなら1048576通り全ての場合について倒せる場合を数え上げる必要があります。 これが、私が瀕死率を公式化することが困難だという理由です。 毎ターンのダメージが同じだという仮定をしても、確定二発までなら正しく計算が行えます。 しかし、例えば1ターンの最大ダメージが40の攻撃でHP200の敵を倒そうとする場合、 急所に当たらないとして5ターンで倒せる真の確率は1/1048576ですが、 what?さんの方法で計算すると1/16になります。 ターン数が多くなるほど無視できない誤差になるため、当サイトの瀕死率では毎ターンのダメージが異なることを再現して作ってあります。
|
|