本文へスキップ
Case Converter Online
ja

乱数生成ツール(ランダムな数字)

好きな2つの値の間からランダムな数字を1つ選んだり、まとめて複数を引いたりできます。くじ引きのような抽選には「重複なし」をオンにしてください。

オプション

結果

最近の結果

  1. 直近10件の結果がここに表示されます。ページを離れるまでの間だけ保持されます。

この乱数生成ツールでできること

指定した範囲から、整数や小数をランダムに選びます。くじの当選番号のように1つだけ引くことも、テストデータ、授業でのゲーム、サンプル抽出のために何千個も作ることもできます。範囲内のすべての数字はまったく同じ確率で選ばれ、範囲の両端も含まれます。

すべての処理はブラウザの中で行われます。数字がサーバーに送られることはなく、ページを離れた後に何かが保存されることもありません。

使い方

  1. 「最小値」に下限の値を、「最大値」に上限の値を入力します。負の数も使えます。
  2. 「個数」に必要な数を設定します。上限は10,000個です。
  3. 「小数点以下の桁数」を選びます。整数が必要なら「なし(整数)」のままにします。
  4. 「並び順」を「出た順」「小さい順」「大きい順」から選びます。
  5. 同じ数字を1回しか出したくない場合は、「重複なし」をオンにします。
  6. 「結果の区切り」を、改行、カンマとスペース、スペース、カンマ、なしから選びます。
  7. 「数字を生成」を押します。

数字が1つの場合は、「結果」の下に大きく表示されます。複数の場合は、スクロールできる欄に一覧が表示されます。「コピー」を押すとすべてコピーできます。直近10回分の抽選は「最近の結果」に、それぞれ「コピー」ボタン付きで一覧表示されます。「クリア」を押すと一覧が空になります。一覧は、ページを離れるか再読み込みするまでの間だけ保持されます。

たとえば日本のロト6のように「1から43までの中から6つ」を選びたい場合は、最小値を1、最大値を43、個数を6にして、「重複なし」をオンにします。

生成例

以下は、ツールのコードを実際に実行した結果です。あなたが実行すれば別の結果になります。それこそが乱数です。

設定 実行結果の一例
1から100、1個 74
1から6、5個(サイコロ) 5, 4, 1, 5, 2
1から49、6個、重複なし、小さい順 6, 12, 19, 24, 27, 33
0から1、3個、小数点以下2桁 0.45, 0.44, 0.63
-10から10、5個、大きい順 6, 5, 3, -7, -7
1000から9999、3個、重複なし 7292, 7269, 5088
1から10、10個、重複なし 9, 5, 2, 10, 3, 4, 1, 7, 8, 6

最後の行は、1から10を完全にシャッフルした結果です。10個の範囲から重複なしで10個を選ぶと、すべての数字がランダムな順番で1回ずつ出てきます。

仕組み

ツールは、crypto.getRandomValues を使ってブラウザにランダムなビットを要求します。そのビットを指定範囲の数字に変換するには注意が必要です。すぐに思い付く近道は、大きな乱数を範囲の大きさで割った余りを使う方法です。しかしこの方法は少し不公平です。範囲の大きさで乱数源がちょうど割り切れない場合、一部の結果がほかより出やすくなります。これをモジュロバイアスと呼びます。

これを避けるために、このツールは棄却サンプリングを使っています。範囲でちょうど均等に分けられる、乱数の最大のブロックを計算します。引いた値がそのブロックの外に出たら捨てて、もう一度引き直します。棄却はめったに起きないので一瞬で終わり、範囲内のすべての数字が同じ確率になります。

小数の場合は、範囲を拡大して計算します。0から1、小数点以下2桁なら、0から100の範囲で引いてから100で割ります。こうすることで、小数の結果も公平に保たれます。

「重複なし」では、同じ値が2回選ばれないようにします。範囲が小さい場合はシャッフルして先頭から取り出し、範囲が大きい場合は1つずつ引いて、すでに選ばれた値は飛ばします。どちらの方法でも、範囲が1から10でも1から10億でも、非復元抽出の公平なサンプルになります。

ヒントと制限

  • 両端も含まれます。 1から6の範囲なら、本物のサイコロと同じように1も6も出ます。
  • 重複するのは普通のことです。 「重複なし」をオンにしていなければ、同じ数字が2回出るのは想定どおりです。上の表のサイコロの行でも、5回のうち5が2回出ています。
  • 範囲が狭すぎる場合。 範囲に含まれる数より多くの重複しない数字を指定すると、短い一覧ではなくメッセージが表示されます。
  • 非常に広い範囲。 最小値と最大値の差は約9,000兆(2の53乗)まで指定できます。非常に広い範囲で小数点以下の桁数を多くすると、この上限に達してメッセージが表示されることがあります。
  • 公式の抽選には向きません。 このツールは公平ですが、公式の宝くじや懸賞の抽選では、監査済みの機器や立会人が必要になることがよくあります。適用されるルールを確認してください。
  • パスワードが必要ですか? 英字、数字、記号を組み合わせる強力なパスワード生成ツールを使ってください。

そのほかの乱数の作り方

Excel と Google スプレッドシート。 =RANDBETWEEN(1,100) は1から100の整数を1つ返します。最新の Excel では、=RANDARRAY(10,1,1,100,TRUE) で10個のセルを埋められます。値はシートが再計算されるたびに変わるので、残したい場合は値として貼り付けてください。

Python。 ゲームやシミュレーションなら random.randint(1, 100) で十分です。セキュリティに関わる用途では secrets.randbelow(100) + 1 を使い、重複しない数字を選ぶには random.sample(range(1, 50), 6) を使います。

JavaScript。 Math.random() は手軽ですが、予測できないようには設計されていません。公平さが重要な場合は、このページと同じように crypto.getRandomValues と棄却サンプリングを使ってください。

コマンドライン。 Linux と macOS では、shuf -i 1-100 -n 1 で1から100の数字を1つ表示できます。

関連ツール

数字の一覧を順番に並べるには、数字の並べ替えツールを使ってください。数字ではなく一覧から名前や選択肢を選ぶなら、ランダム選択ツールを試してください。日付の範囲からランダムな日を選ぶには、ランダム日付生成ツールを使ってください。

乱数生成のよくある質問

1から100の間でランダムな数字を1つ選ぶには?

「最小値」を1、「最大値」を100のままにして、「個数」を1にし、「数字を生成」を押してください。1と100も選ばれる可能性があり、その間のすべての数字が同じ確率で選ばれます。

重複しない乱数を作れますか?

はい。「数字を生成」を押す前に「重複なし」をオンにしてください。各値は最大1回しか出てきません。1から5の範囲で6個のように、範囲に含まれる数より多くを指定した場合は、範囲が狭すぎることを知らせるメッセージが表示されます。

この乱数は本当にランダムですか?

ブラウザがセキュリティ用途のために提供している乱数源 crypto.getRandomValues を使っていて、その種は OS から供給されています。物理的にサイコロを振るわけではありませんが、予測できない値であり、多くのサイトで使われている単純な Math.random 関数よりもはるかに優れています。

小数の乱数も作れますか?

はい。「小数点以下の桁数」を1から6の間で設定してください。範囲を0から1、小数点以下2桁にして実行したところ、0.45、0.44、0.63 が出ました。

一度に作れる数に上限はありますか?

一度に最大10,000個まで作成できます。最小値と最大値の差は約9,000兆まで指定でき、実用上の用途はすべてカバーできます。