本文へ移動

Korokoroコロコロ

ダイスを組み合わせて振り、ダイス表記を読み取り、正確な確率を調べます。履歴の保存やシードを指定した再現もできます。

「コロコロ」は、小さなものが転がる様子を表す言葉です。 名前について(英語)

目次

やり方

正確な確率

分布、合計の確率、整数の件数、ホールドした場合の確率を調べます。

合計の確率を調べる

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を使います。計算の仕組みに前提を説明しています。

ソースを見るGitHub で編集@johnmorrisdotca/korokoro 1.16.0 のソースから作成しました。

この日本語は、まだ日本語を母語とする方の確認を受けていません。訂正を歓迎します。