MariaDBにはRAND()
が含まれています ランダムな数値を返す関数。より正確には、DOUBLE
を返します 高精度浮動小数点値v
0 <= v < 1.0
の範囲 。
これは素晴らしいことですが、より広い範囲内の整数を生成したい場合、そして指定した範囲を生成したい場合はどうでしょうか?
幸い、これを行うための簡単なテクニックがあります。
テクニック
特定の範囲内のランダムな整数を返すための鍵は、次の構文にあります。
FLOOR(min_value + RAND() * (max_value - min_value +1))
これはFLOOR()
を使用します 引数以下の最大の整数値を返す関数。 RAND()
として見る 関数は引数の一部です。必要な最小および最大のランダム値を指定するために、さらにいくつかの計算を適用するだけです。
1〜10のランダムな整数を生成します
したがって、上記の構文を使用して、1〜10のランダムな整数を生成する例を次に示します。
SELECT FLOOR(1 + RAND() * (10 - 1 +1));
結果:
+---------------------------------+ | FLOOR(1 + RAND() * (10 - 1 +1)) | +---------------------------------+ | 7 | +---------------------------------+
ランダム効果を確認するために、もう少し呼びましょう:
SELECT
FLOOR(1 + RAND() * (10 - 1 +1)) AS r1,
FLOOR(1 + RAND() * (10 - 1 +1)) AS r2,
FLOOR(1 + RAND() * (10 - 1 +1)) AS r3,
FLOOR(1 + RAND() * (10 - 1 +1)) AS r4,
FLOOR(1 + RAND() * (10 - 1 +1)) AS r5,
FLOOR(1 + RAND() * (10 - 1 +1)) AS r6,
FLOOR(1 + RAND() * (10 - 1 +1)) AS r7,
FLOOR(1 + RAND() * (10 - 1 +1)) AS r8;
結果:
+----+----+----+----+----+----+----+----+ | r1 | r2 | r3 | r4 | r5 | r6 | r7 | r8 | +----+----+----+----+----+----+----+----+ | 3 | 6 | 10 | 4 | 6 | 10 | 1 | 6 | +----+----+----+----+----+----+----+----+
1〜100のランダムな整数を生成します
1から100までのランダムな数値を生成するには、10を100に置き換えるだけです。
SELECT FLOOR(1 + RAND() * (100 - 1 +1));
結果:
+----------------------------------+ | FLOOR(1 + RAND() * (100 - 1 +1)) | +----------------------------------+ | 87 | +----------------------------------+
ランダム効果を確認するために、もう少し呼びましょう:
SELECT
FLOOR(1 + RAND() * (100 - 1 +1)) AS r1,
FLOOR(1 + RAND() * (100 - 1 +1)) AS r2,
FLOOR(1 + RAND() * (100 - 1 +1)) AS r3,
FLOOR(1 + RAND() * (100 - 1 +1)) AS r4,
FLOOR(1 + RAND() * (100 - 1 +1)) AS r5,
FLOOR(1 + RAND() * (100 - 1 +1)) AS r6,
FLOOR(1 + RAND() * (100 - 1 +1)) AS r7,
FLOOR(1 + RAND() * (100 - 1 +1)) AS r8;
結果:
+----+----+----+----+----+----+----+----+ | r1 | r2 | r3 | r4 | r5 | r6 | r7 | r8 | +----+----+----+----+----+----+----+----+ | 61 | 45 | 41 | 68 | 19 | 92 | 99 | 18 | +----+----+----+----+----+----+----+----+
10000〜50000のランダムな整数を生成します
もう1つやってみましょう。今回は、10000〜50000のランダムな数字を生成します。
SELECT FLOOR(10000 + RAND() * (50000 - 10000 +1));
結果:
+--------------------------------------------+ | FLOOR(10000 + RAND() * (50000 - 10000 +1)) | +--------------------------------------------+ | 46884 | +--------------------------------------------+
そして、ランダム効果を確認するためのいくつかの呼び出し:
SELECT
FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r1,
FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r2,
FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r3,
FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r4,
FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r5,
FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r6,
FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r7,
FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r8;
結果:
+-------+-------+-------+-------+-------+-------+-------+-------+ | r1 | r2 | r3 | r4 | r5 | r6 | r7 | r8 | +-------+-------+-------+-------+-------+-------+-------+-------+ | 13688 | 37790 | 17884 | 46052 | 46608 | 44880 | 34578 | 28249 | +-------+-------+-------+-------+-------+-------+-------+-------+