乱数ジェネレーター
生成処理はすべてブラウザ内で完結します。データは送信されません
乱数を出すだけの単純な話に見えますが、正しく出るかどうかは見落としやすい数点で決まります。 乱数源は `crypto.getRandomValues` で、`Math.random` ではありません。 後者はエンジンによっては予測可能な擬似乱数列で、抽選やクーポン配布、ランダムなグループ分けに使うと実際の脆弱性になります。 範囲は両端を含みます。 1 から 10 と指定すれば 1 も 10 も出ます。実装には剰余ではなく棄却サンプリングを使っています。剰余だと小さいほうの値がわずかに出やすくなります(0–255 を 1–10 に対応させると、最初の 6 つは元が 6 通り、残りは 5 通りになる)。小さな標本では見えませんが、実際に偏りです。 重複の排除は約束です。 範囲に足りないのに重複なしを指定したらエラーにします。黙って個数を減らしたり、こっそり重複を混ぜたりはしません。 基数は別ツールではなく 1 列です。 「2 進数の乱数を 10 個」と「乱数を 10 個出してから 2 進数にする」は同じ作業なので、ここで一度に済ませます。
機能
- 整数と小数の 2 種類。範囲の両端も出ます
- 乱数源は `crypto.getRandomValues` で、予測可能な擬似乱数列ではありません
- 棄却サンプリングで一様性を確保。小さい値が出やすくなる偏りがありません
- 重複排除は任意。範囲が足りなければエラーにし、黙って重複させたり減らしたりしません
- 昇順・降順に並べ替え可能。並べ替えるのは同じ一批で、生成し直しません
- 出力は 10 進・2 進(0b)・8 進(0o)・16 進(0x)
- 一度に最大 1000 個。整数の範囲は ±2⁵³ まで
- 小数桁は 0〜12 桁
- すべて端末内で生成し、外部への通信はありません
使い方
- 整数か小数を選びます
- 最小値・最大値・個数を入力します
- 必要なら重複排除や並べ替えを設定します
- 「再生成」で引き直し、「コピー」で取り出します
よくある質問
- Math.random を使わないのはなぜですか?
- `Math.random` はエンジンによっては予測可能な擬似乱数列で、十分な出力を観察すると次の値が計算できてしまうためです。抽選、クーポンコード、ランダムなグループ分けに使うと、数列を見られる相手に結果を委ねることになります。このツールは OS が提供する暗号学的乱数 `crypto.getRandomValues` を使い、内部状態を外に出しません。
- 「重複なし」で個数を減らすのではなくエラーにするのはなぜですか?
- それが約束だからです。重複なしで 10 個と言われて 7 個返したら、ツールが壊れているか数え間違えたと思うでしょう。10 個返したが中に重複があれば、重複排除が効いていないと思うでしょう。どちらもエラーより悪い結果です。エラーなら「その範囲では用意できない」と伝わり、範囲に何個あるかも示します。
- 分布に偏りはありませんか?
- 2 つの面で対処しています。乱数源は暗号学的です(上記参照)。値の取り出し方は棄却サンプリングで、範囲で割り切れる最大の区間を求め、そこから外れた値は捨てて引き直します。よくある `乱数バイト % 範囲` の書き方だと小さい値がわずかに出やすくなります(0–255 を 1–10 に対応させると、最初の 6 つが 6 通り、残りが 5 通り)。差は小さいですが実在し、抽選ではまさにそれが問題になります。
関連ツール
UUID 生成
生成UUID v4・v7・v8・ULID・NanoID・CUID・ショート ID・MongoDB ObjectId を一括生成。乱数はブラウザの暗号 API から取得し、通信も記録もしません。
素数
生成素数かどうかの判定、素因数分解、N 番目の素数、範囲内の素数の列挙、素数をランダムに生成。大きな数はミラー-ラビン法で高速に判定します。
モックデータ
生成「フィールド名:型」を数行書くだけで、形式が本物そっくりのモックデータをまとめて生成。JSON・CSV・TSV・SQL・XML・YAML・TOML で出力できます。
ダミーテキスト
生成ダミーテキストを生成します。Lorem ipsum・英語の文・中国語・日本語のダミー文から選べます。段落・文・単語単位で出力。すべてブラウザ内で生成します。
QR コード
生成テキスト・リンク・WiFi 設定・連絡先・カレンダー予定の QR コードを生成。前景色と背景色を変更でき、PNG とベクター SVG で保存できます。
パスワード生成
生成長さと文字種を指定して強力なランダムパスワードを生成。エントロピーを即時表示し、強さを数値で比較できます。パスワードは端末内のみ、送信も記録もありません。