サイコロ振り
好きな数のサイコロを好きな面数で振れます — 暗号論的乱数を使用し、合計値と履歴付き。
1,098回閲覧
公平なサイコロの仕組み
このページのすべての振りは、Math.random()ではなくcrypto.getRandomValues()から生成されます。生の出力は、このサイトの他の乱数ツール全体で使われているのと同じモジュロバイアス除去方式でフィルタリングされます:サイコロの面数の正確な倍数の範囲外に落ちた値は破棄されて再抽選されるため、範囲の端でナイーブなモジュロ除算が生み出す小さな偏りではなく、すべての面が完全に同じ確率を保ちます。
単一のサイコロは均一です — 標準的な6面サイコロでもテーブルトップゲーム用のd20でも、1からNまでの各面は同じ1/Nの確率を持ちます。複数のサイコロを振って合計を見た瞬間、状況は一変します。2個の6面サイコロの合計はまったく均一ではありません:7を中心とした三角形の、釣鐘に似た分布を形成します。これは、2(1+1)や12(6+6)を作る方法は1通りしかない一方、7を作る組み合わせは6通り(1+6, 2+5, 3+4, 4+3, 5+2, 6+1)あるためです。3個のサイコロではこのパターンはさらに顕著になります — 10と11が最も多い合計値になる一方、3と18は最も珍しいままです。これは、面を組み合わせる方法の数が中央で増え、両端で減るためです。
注意すべき点
- その曲線を説明するのは運ではなく組み合わせ論です。これは初等確率論における「組み合わせを数える」典型例です — 合計の分布は、各合計を生み出すサイコロの面の組み合わせ数を、可能な組み合わせの総数(6面サイコロ2個なら36、3個なら216)で割ったものと正確に一致します。
- 数回の振りで「よく出る」「出にくい」数字を見ても、ほとんど意味はありません。7は2の6倍の組み合わせを持つため、短いセッションでも自然により頻繁に現れます — これは偏った生成器ではなく、予想される分散です。
- 面数をカスタマイズしたサイコロでは数学が変わります。d20の組み合わせも同じように広がりますが、より平坦です — 中央の値(10-11)は両端の値よりわずかにしか可能性が高くなく、中央と端の差が劇的な2個のd6とは異なります。
- すべてクライアント側で動作します。どの振りもサーバーに送信されず、振った履歴によって実際の分布を理論分布と自分で比較できます。
よくある質問
これはMath.random()とどう違いますか?
crypto.getRandomValues()はオペレーティングシステムの暗号論的乱数ソースから値を取得し、このツールはモジュロバイアスを生む抽選結果を破棄します — 各面の出る確率は完全に均等になりますが、単純なMath.random()では範囲の端でこれが保証されません。
サイコロを2個振って7が出る確率が、2が出る確率よりずっと高いのはなぜですか?
それは1個あたりの確率ではなく組み合わせの数によるものです。2を作る組み合わせは1通り(1+1)しかありませんが、7を作る組み合わせは6通り(1+6, 2+5, 3+4, 4+3, 5+2, 6+1)あります — 36通りある2個のサイコロの結果のうち、7は2の6倍出やすいのです。
サイコロを1個だけ振った場合、均一でないことはありますか?
いいえ — 公平な単一のサイコロは、常に各面が正確に1/Nの確率を持ちます。釣鐘型の均一でない分布が現れるのは、複数のサイコロを合計したときだけです。
d20のような標準的でないサイコロも振れますか?
はい — テーブルトップRPGやボードゲーム、独自の確率実験のために、2から1000までの任意の面数を設定できます。
振った履歴はサイコロが公平であることを証明しますか?
十分な回数の振りがあれば、はい — 履歴を追跡すると、各面(複数のサイコロなら各合計)の観測頻度は理論上の確率に収束していくはずです。短いセッションではどちらの方向にも自然な分散が見られます。
関連ツール
問題を報告
サイコロ振り
コメント
まだコメントはありません — 最初のコメントを書いてみましょう!