123DiceRollerは、リアルな3Dサイコロをブラウザで振れる無料のオンラインサイコロアプリです。公平で速く、プライバシーを守ることを目指して作られています。結果は暗号学的に安全な乱数生成器で決まり、サイコロは本物の物理演算で転がり、あなたやあなたのロールに関する情報がサーバーに送られることは一切ありません。
ロールの仕組みを順を追って
- まず数字を決めます。ダイスごとに、ブラウザのWeb Crypto API(
crypto.getRandomValues)が32ビットの乱数を1つ生成します。この数を「棄却サンプリング」で面に変換します。小さい目がほんのわずかに出やすくなってしまう値は捨てて引き直すので、N面ダイスのどの面も、ちょうどN分の1の確率で出ます。 - 投げる動きをシミュレーションします。剛体物理エンジン(cannon-es)が、重力、摩擦、跳ね返り、ダイス同士の衝突を計算しながら、ダイスをテーブルに投げます。この計算はすべて、画面に表示する前のほんの一瞬で終わります。
- 出目に合わせてダイスを回転させます。ダイスの形はどれも対称です。たとえばd20は、60通りの向きに回転させても見た目が変わりません。ダイスローラーはそのなかから、決まった数字が物理演算で上になった面の位置に来る回転を1つ選び、最初のフレームから適用します。動きは本物で、数字はあらかじめ公平に決まっていた、というわけです。
- 傾いて止まったダイスは投げ直します。ほかのダイスに寄りかかって止まりそうなダイスがあれば、本物のテーブルで振り直しになるのと同じように、見えないところで投げ直します。
- 投げた様子を再生します。影や反射をつけ、衝突のたびにタイミングを合わせた音を鳴らします。
なぜ物理演算に数字を決めさせないのか
シミュレーションは公平な乱数源ではないからです。初期位置や時間刻み、丸め誤差といった細かな要因によって、特定の面がほかより多く出ることがあり、そうならないことは誰にも証明できません。暗号学的な乱数生成器は、予測できず、偏りがないように設計・検証されています。両者を分けることで、それぞれの良いところが手に入ります。見た目も音も本物そっくりのロールと、信頼できる結果です。
正確な確率
各ロールに表示される確率は、推測ではなく計算したものです。合計はダイスを1個ずつ畳み込んで求め、有利のような採用・除外のあるロールは、異なる結果をすべて数え上げて求めます。計算方法はサイコロ確率計算機のページで説明しています。
使用している技術
どちらのライブラリも外部のCDNではなくこのサイトから配信しているため、ページがほかの場所からコードを読み込むことはありません。
123ファミリーの一員です
123DiceRollerは、123Calculatorをはじめとする、登録不要の無料ツールの仲間です。ご質問やアイデア、バグの報告はhello@123diceroller.comまでメールでお寄せください。
最終更新: