数学苦手なんで(……とも言ってられないんだが)、馬力で計算してみたw
厳密には「3以上の時は技能値(等)が足される」ので、その辺で少し加減されるんだけど。
いったん「ダイス目だけ」で、陰徳値無考慮で純粋に「ダイスの確率」で確認。
プログラムでざっくり書いてるんで端数誤差あるんだけど、その辺は気にせずに。
0 | 27.777778% |
3 | 4.320988% |
4 | 4.783951% |
5 | 8.641975% |
6 | 9.567901% |
7 | 12.962963% |
8 | 10.030864% |
9 | 8.641975% |
10 | 6.17284% |
11 | 4.320988% |
12 | 2.314815% |
20 | 0.462963% |
「n値以上」だと、こんな感じ。
0以上 | 100% |
3以上 | 72.222223% |
4以上 | 67.901235% |
5以上 | 63.117284% |
6以上 | 54.475309% |
7以上 | 44.907408% |
8以上 | 31.944445% |
9以上 | 21.913581% |
10以上 | 13.271606% |
11以上 | 7.098766% |
12以上 | 2.777778% |
20以上 | 0.462963% |
ここの判定と比較的近似と思われる、2d6の分布は大体こんな感じ。
2 | 2.78% |
3 | 5.56% |
4 | 8.33% |
5 | 11.11% |
6 | 13.89% |
7 | 16.67% |
8 | 13.89% |
9 | 11.11% |
10 | 8.33% |
11 | 5.56% |
12 | 2.78% |
で
2 | 100.00% |
3 | 97.22% |
4 | 91.67% |
5 | 83.33% |
6 | 72.22% |
7 | 58.33% |
8 | 41.67% |
9 | 27.78% |
10 | 16.67% |
11 | 8.33% |
12 | 2.78% |
比較っぽい表にすると、こんな感じ。
0 | - | 100% |
2 | 100.00% | - |
3 | 97.22% | 72.222223% |
4 | 91.67% | 67.901235% |
5 | 83.33% | 63.117284% |
6 | 72.22% | 54.475309% |
7 | 58.33% | 44.907408% |
8 | 41.67% | 31.944445% |
9 | 27.78% | 21.913581% |
10 | 16.67% | 13.271606% |
11 | 8.33% | 7.098766% |
12 | 2.78% | 2.777778% |
20 | - | 0.462963% |
一概には言いにくいんだけど、中程度の難易度を想定するときは「平目で、2d6の時より1くらい値を下げておく」をベースにすると、割と、近似するんじゃなかろうか? と。
なお、コード(デバッグ出力があちこちあんのは気にすんな)。
<?php // 元ネタ $base = []; for($i = 1; $i <= 6; ++$i) { for($j = 1; $j <= 6; ++$j) { for($k = 1; $k <= 6; ++$k) { for($l = 1; $l <= 6; ++$l) { $base["{$i},{$j},{$k},{$l}"] = [$i, $j, $k, $l]; } } } } // var_dump($base); // 確認 $data = []; foreach($base as $k => $v) { // いったん、サイコロの目をsort sort($v); // 先にクリティカル確認 if ( ($v[0] === $v[1])&&($v[1] === $v[2])&&($v[2] === $v[3]) ) { echo "クリット: {$k}\n"; $data[20] ??= 0; $data[20] ++; continue; } // 失敗を算出 if ( ($v[0] != $v[1])&&($v[1] !== $v[2])&&($v[2] !== $v[3]) ) { echo "ファンブル: {$k}\n"; $data[0] ??= 0; $data[0] ++; continue; } // 通常成功を算出(面倒だから馬力) if ( ($v[0] === $v[1]) ) { $key = $v[2] + $v[3]; echo "{$k} => {$v[2]} + {$v[3]} = {$key} \n"; } elseif (($v[1] === $v[2])) { $key = $v[0] + $v[3]; echo "{$k} => {$v[0]} + {$v[3]} = {$key} \n"; } elseif (($v[2] === $v[3])) { $key = $v[0] + $v[1]; echo "{$k} => {$v[0]} + {$v[1]} = {$key} \n"; } // $data[$key] ??= 0; $data[$key] ++; } //var_dump($data); // sortして ksort($data); // 合計値出して $total = array_sum($data); // 各値の確率を出力 foreach($data as $k => $v) { printf("%d: %f%% \n", $k, $v/$total*100); }