MySQLでは、RAND()
関数を使用すると、ランダムな数値を生成できます。具体的には、この関数はランダムな浮動小数点値 vを返します。 0 <= v < 1.0
。
引数としてシード値を指定することで、乱数に影響を与えることもできます。
構文
構文は次のようになります:
RAND([N])
ここでN
結果に影響を与えるために使用できるオプションのシード値です。
例1-引数なし
これは、引数を提供しない場合に何が起こるかを示すための基本的な例です。
SELECT RAND();
結果:
+--------------------+ | RAND() | +--------------------+ | 0.4335442291885095 | +--------------------+
結果は一定ではありません。実行するたびに異なります。
複数のRAND()
を実行するとどうなるかの例を次に示します。 一緒に機能します。
SELECT RAND() 'Result 1', RAND() 'Result 2', RAND() 'Result 3';
結果:
+--------------------+---------------------+---------------------+ | Result 1 | Result 2 | Result 3 | +--------------------+---------------------+---------------------+ | 0.9413559538697414 | 0.40614711251682334 | 0.20666773170853753 | +--------------------+---------------------+---------------------+
例2–シード値の使用
前述のように、引数を渡してシード値を決定できます。これにより、関数の出力に影響を与えることができます。
SELECT RAND(5);
結果:
+---------------------+ | RAND(5) | +---------------------+ | 0.40613597483014313 | +---------------------+
この場合、等しい引数値が指定されていれば、関数は毎回同じ値を返します。
SELECT RAND(5) 'Result 1', RAND(5) 'Result 2', RAND(5) 'Result 3';
結果:
+---------------------+---------------------+---------------------+ | Result 1 | Result 2 | Result 3 | +---------------------+---------------------+---------------------+ | 0.40613597483014313 | 0.40613597483014313 | 0.40613597483014313 | +---------------------+---------------------+---------------------+
例3–式の一部としてRAND()を使用する
RAND()
を使用できます 式の一部として機能します。
SELECT RAND()*10;
結果:
+-------------------+ | RAND()*10 | +-------------------+ | 8.148973517258627 | +-------------------+
例4–2つの数値の間にランダムな整数を返す
RAND()
を組み合わせることができます FLOOR()
で関数 2つの数値の間のランダムな整数を返す関数。
5〜10(両端を含む)の整数を生成する方法は次のとおりです。
SELECT FLOOR(RAND()*(10-5+1)+5);
結果:
+--------------------------+ | FLOOR(RAND()*(10-5+1)+5) | +--------------------------+ | 7 | +--------------------------+
同じコードを複数回実行して、さまざまな結果を確認しましょう。
SELECT FLOOR(RAND()*(10-5+1)+5) 'Result 1', FLOOR(RAND()*(10-5+1)+5) 'Result 2', FLOOR(RAND()*(10-5+1)+5) 'Result 3';
結果:
+----------+----------+----------+ | Result 1 | Result 2 | Result 3 | +----------+----------+----------+ | 7 | 9 | 6 | +----------+----------+----------+