Stax
Tools

Random Number Generator

Generate secure random numbers in any range.

Click Generate to produce random numbers using crypto.getRandomValues()

乱数の用途

Math.random() vs crypto.getRandomValues()

Math.random()は起動時にシードされる決定論的な疑似乱数アルゴリズムを使用します。ほとんどのゲームやシミュレーションには問題ありません。しかしcrypto.getRandomValues()はOS のエントロピープールから取得します——暗号化キー生成に使用されるのと同じソースです。このツールは常にセキュアなバージョンを使用します。

クラスルーフルを実施する先生は、min=1、max=30、count=1を設定して、クラス名簿から偏りなくランダムに生徒を選びます。単体テストを書く開発者はテストデータベースのシードに、10000〜99999の範囲で100個のユニークなランダムIDをバッチ生成します。テーブルトップRPGのプレイヤーはmin=1、max=8を設定して8面ダイスのロールをシミュレートします。統計学の学生は大数の法則を実証するため、1〜10の間で1,000個の数値を生成し、各桁がおよそ100回出現することを確認します。セキュリティチームはCSPRNGモードを使用して1回限りのアクセス認証情報用のランダムPINコードを生成し、シード時刻がわかっても値が予測できないようにします。

crypto.getRandomValues()はすべてのモダンブラウザで2014年以降利用可能なWeb Cryptography APIの一部です。このツールのUint32Arrayなどの型付き配列に、OSのエントロピープール——ハードウェアイベント、割り込みタイミング、その他の予測不可能なシステムソース——からのバイトを書き込みます。Math.random()と異なり、ブラウザの時間や状態を知っていても出力を予測できません。これによりPIN生成、ワンタイムコード、推測攻撃に耐性が必要なあらゆる乱数に適しています。

重複なしが有効な場合、このツールは整数の全範囲を構築し、Fisher-Yatesアルゴリズム(各要素を暗号化的にランダムなインデックスと交換)を使用してシャッフルし、最初のN個の要素を取得します。これにより均一な分布が保証されます——すべての順列が等しく可能性を持ちます。「新しいものが出るまで生成し続ける」という素朴なアプローチはリストが埋まるにつれて誕生日パラドックスの衝突が頻発しパフォーマンスが低下しますが、Fisher-YatesはO(N)時間で密度に関係なく実行されます。

  • くじ / 抽選——プレゼント企画のための公平なランダム抽選
  • ダイスシミュレーション——テーブルトップゲーム、確率実験
  • ランダムサンプリング——テスト用のリストからランダムにアイテムを選ぶ
  • パスワードシード——ランダムなPINコードやOTPの生成
  • 教育——統計の演習、確率のデモンストレーション
  • ゲーム——ランダムなカードシャッフル、チーム分け

よくある質問

Is this truly random?
This generator uses crypto.getRandomValues() — the browser's cryptographically secure pseudorandom number generator (CSPRNG). It is significantly more random than Math.random() and suitable for security-sensitive applications.
What does 'no duplicates' do?
When enabled, each number in the output appears only once — like drawing numbers from a hat without replacement. This uses a Fisher-Yates shuffle on the full range. Note: you cannot generate more unique numbers than there are integers in the range.
What is the maximum number of values I can generate?
You can generate up to 1,000 random numbers at once. For most use cases (lottery picks, random sampling, dice simulation) this is more than sufficient.
How do I simulate a dice roll?
Set Min to 1 and Max to 6 for a standard die. For multiple dice, increase the count. For a D20 (used in tabletop games), set Min to 1 and Max to 20.
Can I use this for a lottery or raffle?
Yes. Set Min to 1 and Max to your lottery range (e.g., 49 for UK Lotto), enable No Duplicates, and set count to the number of balls drawn (e.g., 6). This gives a fair random draw.

関連ツール