Toolify

乱数生成 — 暗号学的に安全・重複なしモード

最小値・最大値・個数を指定してランダムな整数を生成。「重複なし」モードで抽選・くじ・チーム分けにも使えます。

範囲を設定して「再生成」を押すと乱数が表示されます。

仕組み

本ツールが「本当にランダム」な理由

Math.random() ではなく crypto.getRandomValues(ブラウザの暗号学的に安全な乱数生成器)を使用しています。CSPRNG の出力は過去値から予測できないため、抽選・くじ引き・公平性が必要な場面で実質的に「ランダム」と呼べます。

また、棄却法(rejection sampling)を使って範囲内の各値が完全に等確率になるようにしています。素朴な「乱数 % range」は範囲が2³²の約数でない限り偏りが出ますが、棄却法で偏りの原因となる値を捨てて再抽選するため、範囲内のどの数も同じ確率で出現します。

「重複なし」モードと通常モード

通常モード: 各値が独立に生成され、重複が起きうる。サイコロ・ランダム化テスト・「映画のおすすめ」などカジュアル用途向け。

重複なしモード: 一度選んだ値は同じバッチで再選択されない(非復元抽出)。宝くじ風(1〜49から6個)、抽選、チーム分けなど「N個をMから選ぶ」用途に最適。個数 ≤ 範囲が必要。

活用例

抽選・くじ: 1〜49から6個など。「重複なし」をON。

サイコロ: 1〜6(D20なら1〜20)。各回独立にしたいので「重複なし」OFF。

テスト用ランダムサンプル: 1〜10000のユーザーIDから10個抽出してスポットチェック。重複防止のため「重複なし」ON。

コイントス: 0〜1の範囲で多回。表裏のカウントで公平性チェックに使えます(大量サンプルで約50/50に収束)。

よくある質問

公的な抽選・宝くじに使えますか?

暗号学的に安全で偏りもありません。ただし「公的に公平」と認められるかは法域・規則次第で、多くの公的抽選は認証された専用ハードウェアRNGを要求します。

Math.random()との違いは?

Math.random()のアルゴリズムは過去出力から予測可能ですが、crypto.getRandomValuesはOSレベルの暗号学的乱数源を使用し予測不可能です。本物の公平性が必要なら本ツールを。

負の数も生成できますか?

はい。最小値に負の値を入力すれば対応します。

範囲の上限は?

JavaScriptの安全整数(約2⁵³)まで。実用的には数十億まで問題なく動作します。棄却法はどの範囲でも正しく機能します。

「重複なし」で個数 > 範囲だとエラーになるのは?

1〜5から10個の重複なし乱数は数学的に不可能(足りない4個が存在しない)。検証で防いでいます。範囲を広げるか個数を減らしてください。

サイコロにも使えますか?

はい。範囲を1〜6(D20なら1〜20)にして「重複なし」をOFFにすれば各振りが独立になります。

シードを保存して再現できますか?

暗号学的乱数は仕様上シードなしです。再現性が必要なら別途シード付きPRNGライブラリをご利用ください。

入力データはサーバーに送信されますか?

いいえ。生成はすべてブラウザ内で完結します。

関連ツール

最終更新: