乱数ジェネレーターとは?
乱数ジェネレーター(RNG)は、あなたが指定した範囲の中から予測不能な数字を作り出すツールです。このツールでは、最小値と最大値の間(どちらも含む)の整数をランダムに生成します。1つだけ取り出すことも、まとめて複数取り出すこともでき、同じ数字の重複を許すかどうかも自由に選べます。抽選やプレゼント企画、宝くじのような数字選び、リストからの当選者決め、チーム分け、サイコロやゲームの出目、サンプリングなど、公平に選びたいあらゆる場面で役立ちます。
使い方
範囲の最小値と最大値を入力し、必要な生成する個数(1〜100)を設定して、重複を許可するかを選びます。重複をオフにすると、ジェネレーターは異なる値だけを返します。さらに、範囲内で用意できる数より多くの個数を指定した場合は、利用できる値の数に自動で上限が調整されます。
計算式の解説
整数を1つ生成するとき、ツールは次の式を使います。
$$x_i = \text{Min} + \left\lfloor \text{rand}() \times \left( \text{Max} - \text{Min} + 1 \right) \right\rfloor$$ここで \(\text{rand}()\) は \([0, 1)\) の範囲をとる一様な小数です。これに範囲の大きさ \(\text{Max} - \text{Min} + 1\) を掛けて切り捨てると、0から「範囲−1」までのオフセットが得られ、それを \(\text{Min}\) に足します。これにより、両端を含む区間内のすべての整数が同じ確率で選ばれます。複数生成する場合はこの処理を繰り返すだけです。
$$x_i = \text{Min} + \left\lfloor \text{rand}() \times \left( \text{Max} - \text{Min} + 1 \right) \right\rfloor \quad i = 1 \dots \text{Count}$$重複を禁止しているときは、選ばれた値はプールから取り除かれるため、二度と現れません。
$$\begin{gathered} \{x_1, x_2, \dots, x_k\} \subseteq \{\, \text{Min}, \dots, \text{Max} \,\}, \quad x_i \neq x_j \\[1.5em] \text{where}\quad \left\{ \begin{aligned} k &= \min\!\left( \text{Count},\; R \right) \\ R &= \text{Max} - \text{Min} + 1 \end{aligned} \right. \end{gathered}$$
具体例
たとえば1から6までの中から重複しない数字を3つ選びたいとします。範囲の大きさは \(6 - 1 + 1 = 6\) です。ジェネレーターは {1,2,3,4,5,6} の中から選び、選んだ値を順に取り除いていくので、たとえば 4, 1, 6 のように、決して重複しない3つの異なる数字が得られます。重複を許可している場合は、4, 4, 1 のような結果になることもあります。
よくある質問
本当に完全なランダムですか? いいえ、これは「疑似乱数」です。ソフトウェアのアルゴリズムによって生成され、統計的には十分に均一で、ゲームや抽選、日常的な選択には申し分ありません。ただし暗号用途には適していません。
最小値と最大値は含まれますか? はい。どちらの端の値も生成される可能性があり、区間は両端を含みます。
最小値が最大値より大きい場合は? 自動的に入れ替えられるので、範囲は正しく機能します。