やり方
正確な確率
分布、合計の確率、整数の件数、ホールドした場合の確率を調べます。
合計の確率を調べる
import { parseNotation, distributionOf, chanceAtLeast, expectedTotal } from "@johnmorrisdotca/korokoro";
const spec = parseNotation("2d6")!;
const odds = distributionOf(spec);
console.log(chanceAtLeast(odds, 10), expectedTotal(odds));
console.log(odds.probabilities[7 - odds.min]);0.16666666666666669 7
0.16666666666666666確率は0から1の値です。配列の添字は合計そのものではなく、minからの差です。振り直しや追加のダイスにも、パッケージの上限を含めて計算します。
整数で数える
import { parseNotation, exactCounts } from "@johnmorrisdotca/korokoro";
const exact = exactCounts(parseNotation("2d6")!);
if (exact) console.log(exact.min, String(exact.outcomes), exact.counts.map(String));2 36 [
'1', '2', '3', '4',
'5', '6', '5', '4',
'3', '2', '1'
]exactCountsは、対応する規則ではBigIntの件数を返します。対応しない組み合わせや範囲ではnullです。BigIntをJSONにする場合は、文字列に変換します。正規化した設定の確率にはdistributionOfを使います。
ホールドした出目を固定する
import { parseNotation, distributionHolding } from "@johnmorrisdotca/korokoro";
const odds = distributionHolding(parseNotation("2d6")!, [6, 3], [true, false]);
console.log(odds.min, odds.max);7 12ホールドしていないダイスだけが変わります。繰り返す場合はchanceAnyAtLeastやexpectedHighestを使います。計算の仕組みに前提を説明しています。
この日本語は、まだ日本語を母語とする方の確認を受けていません。訂正を歓迎します。