乱数生成ツール(ランダム数字)
最小値と最大値(例:1〜100、0〜100)と個数を決めるだけで乱数を生成します。「重複なし」にすると、抽選箱からくじを引くように同じ数字は一度しか出ません。
計算方法
最小値から最大値まで(両端を含む)のすべての整数が同じ確率で出ます。1〜100なら候補は100個で、どの数字も1%。0〜100なら101個です。乱数はブラウザーの暗号学的に安全な乱数生成器crypto.getRandomValues()から得ています。範囲に合わせるときに偏りの原因になる値は捨てて引き直すため、特定の数字が出やすくなることはありません。
重複あり・重複なしの違い
- 重複なしは抽選箱と同じで、引いた玉は箱に戻りません。ロトの数字、くじ引きの番号、順番決め、サンプルの抽出に向いています。
- 重複ありはサイコロを何度も振るのと同じで、同じ数字が何度でも出ます。シミュレーションや、数字どうしが独立している必要がある場合に使います。
重複なしのときはフロイドのアルゴリズムを使います。1〜10億のような大きな範囲でも、すべての数字をメモリーに並べることなく、どの組み合わせも完全に等しい確率で選びます。その後、フィッシャー–イェーツ法で順番をシャッフルします。
例:1〜100から重複なしで5個
最小値に1、最大値に100、個数に5を入れて「重複なし」をオンにします。ある数字が5個の中に入る確率は5%(100分の5)です。特定の5個の組み合わせになる確率は、100個から5個を選ぶ組み合わせの数から75,287,520分の1。どちらの値も入力欄のすぐ下に表示されます。
重複ありにすると、同じ数字が2回出ることは意外と多く起こります。1〜100から10個引くと、少なくとも1組が重なる確率は37.2%です(1 − 100×99×…×91 ÷ 10010)。ロトの数字を戻さずに抽選するのはこのためで、プリセットは自動で重複なしになります。
こんなときは
- 1か2・1〜3・1〜6:範囲を設定するだけで、確率はそれぞれ1/2、1/3、1/6になります。二択ならコイントスのほうがわかりやすいでしょう。
- 0を含める:0〜100は100個ではなく101個です。
- 4桁の数字:0〜9999にすると0000〜9999(先頭の0は省略して表示)、1000〜9999にすると先頭が0でない4桁になります。
- 小数:生成するのは整数だけです。小数第2位までほしいときは、たとえば0〜1,000で生成して100で割ります(0.00〜10.00)。
ロトのプリセットと本当の確率
各プリセットは、日本の数字選択式宝くじ(ロト)の本数字を選びます。N個の数字から異なるk個を選び、順番を問わない場合の組み合わせの数は「N個からk個を選ぶ組み合わせ(ₙCₖ)」で、推測ではなく正確に計算できます。
| くじ | 申込数字 | ボーナス数字 | 組み合わせの数(1等の確率) |
|---|---|---|---|
| ロト7 | 1〜37から7個 | 2個(抽せんのみ) | 10,295,472 |
| ロト6 | 1〜43から6個 | 1個(抽せんのみ) | 6,096,454 |
| ミニロト | 1〜31から5個 | 1個(抽せんのみ) | 169,911 |
つまり1等(本数字がすべて一致)の確率は、ロト7が10,295,472分の1、ロト6が6,096,454分の1、ミニロトが169,911分の1です。ボーナス数字は2等などの判定に使われるもので、抽せんで決まり、申込者が選ぶものではありません。そのためプリセットは本数字だけを選びます。
ランダムに選んでも、当せん確率は自分で考えた数字とまったく同じです。ルールや販売方法は変わることがあるため、購入前に宝くじ公式サイトで最新の内容を確認してください。
疑似乱数ではない暗号学的な乱数
簡単な乱数生成器の多くはMath.random()を使っています。これは計算で数列を作る疑似乱数で、内部状態がわかれば予測でき、暗号用途には向きません。このツールはcrypto.getRandomValues()を使います。OSがハードウェアのノイズなどの実際のエントロピー源から種を得る、暗号学的に安全な乱数生成器(CSPRNG)です。1回ごとの抽選は前の結果と独立しているので、重複ありで同じ数字が続けて出てもエラーではなく、独立していることの表れです。
よくある質問
本当の乱数ですか?疑似乱数ですか?
暗号学的に安全な乱数です。多くのツールが使う単純な疑似乱数(Math.random())ではなく、Web Crypto API(CSPRNG)から値を得ています。ゲーム、抽選、たいていの用途には十分です。暗号鍵の生成など特に高い安全性が必要な場合は、専用の暗号ライブラリーを使ってください。
1〜100や0〜100のランダムな数字を出すには?
1〜100なら「1〜100」のプリセットを押します。0〜100なら最小値に0、最大値に100を入れます。この場合0も含まれ、候補は101個になります。
ロト6・ロト7・ミニロトの数字をランダムに選ぶには?
該当するプリセットを押すと、範囲、個数、重複なし、並べ替えが設定され、本数字がすぐに選ばれます。ボーナス数字は抽せんで決まるため、選ぶ必要はありません。
ランダムな4桁の数字を作るには?
最小値に1000、最大値に9999を入れると、先頭が0でない4桁の数字が出ます。暗証番号のように0から始まる数字も含めたいときは0〜9999にして、足りない桁の前に0を付けて読みます。
マイナスの数も使えますか?
はい、たとえば−10〜10のように指定できます。±1,000兆までの整数を使えます。
重複ありで同じ数字が2回出るのはなぜですか?
サイコロを続けて振るのと同じく、1回ごとの抽選が独立しているからです。同じ数字が2回出るのは不具合ではなく、回数を重ねれば当然起こります。同じ数字を1回だけにしたいときは「重複なし」をオンにしてください。
乱数の生成方法は?どういう仕組みですか?
乱数源から生の値を取り出し、指定した範囲に均等に割り当てます。ここではOSがハードウェアのノイズなどから種を得る、ブラウザーの暗号学的な乱数生成器が乱数源です。特定の数字を有利にしてしまう生の値は捨てて引き直すので、最小値から最大値までどの数字も確率はまったく同じです。
Excelで乱数を生成するには?
1〜100の整数なら=RANDBETWEEN(1,100)、0以上1未満の小数なら=RAND()を使います。どちらもシートを変更するたびに再計算されます。重複なしで複数の乱数を出す単独の関数はないため、その場合はこのツールのほうが手軽です。
設定を共有できますか?
はい。範囲、個数、オプションは自動でアドレスバーに保存されます。そのリンクを開いた人には同じ設定が表示され、数字は毎回新しく抽選されます。
出典・根拠
- W3C Recommendation: W3C Web Cryptography API – getRandomValues()
- MDN Web Docs – Crypto.getRandomValues()
更新日:
関連ツール
- サイコロを振る:d6、d20などオンラインでサイコロを振れます。4・6・8・10・12・20面のサイコロを1〜10個、合計・履歴・正確な確率つき。公平な暗号学的乱数を使用。
- 抽選ツール(名前でくじ引き)名前のリストから当選者をランダムに抽選、順番をシャッフル、チームに均等分けできる無料の抽選ツール。登録不要で、リンクで結果を共有できます。
- 数字ルーレット:1から10、100までも自由に数字ルーレット(無料)。1〜10で回すほか、1〜20、1〜50、100までの数字にも変更できます。どの数字も同じ確率で、重複なしの抽選も可能。授業やビンゴに。
- コイントス:表か裏かオンラインでできるコイントス。1回に1〜100枚のコインを投げ、表・裏の割合や最長連続回数をその場で集計します。暗号学的に公平な乱数で、登録も不要です。
- 2048ゲームをオンラインで遊ぶ2048パズルをブラウザで無料プレイ。スワイプか矢印キーで同じ数字をくっつけて2048を目指します。ベストスコア、ひとつ戻す、途中保存に対応。
- Tier表メーカー:ティアリストを作成無料のTier表メーカー。テキストや手持ちの画像をSからFのランクに並べ、行の名前や色も自由に変更。PNGで保存、リンクで共有できます。登録不要です。