適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Microsoft Fabric SQL Database
0から1までの擬似ランダムfloat値を排他的に返します。
構文
RAND ( [ seed ] )
Note
この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。
引数
seed
種子値を与える整数式(tinyint、smallint、int)。 seed が指定されていない場合、SQL Server データベース エンジンがシード値をランダムに割り当てます。 指定したシード値について、返される結果は常に同じです。
戻り値の型
float
注釈
同じシード値を使用して RAND() を繰り返し呼び出しても、同じ結果が返されます。
1 つの接続について、指定したシード値で
RAND()を呼び出すと、以降のすべてのRAND()の呼び出しで、シード値を指定したRAND()の呼び出しに基づいた結果が生成されます。 たとえば、次のクエリでは、同じ数値のシーケンスが常に返されます。SELECT RAND(100), RAND(), RAND();RAND()またはUPDATEクエリでINSERT関数を使用すると、影響を受けるすべての行が同じ値を取得します。
例
A。 4つの異なる乱数を作成します
次の例では、RAND() 関数によって 4 つの異なる乱数が生成されます。
DECLARE @counter AS SMALLINT;
SET @counter = 1;
WHILE @counter < 5
BEGIN
SELECT RAND() AS RandomNumber;
SET @counter = @counter + 1;
END
GO
B: ランダムに0または1を生成します
以下の例では、 ROUND() 関数を使ってランダムに 0 または 1を返します。
SELECT ROUND(RAND(), 0) AS ZeroOrOne;
GO
Note
この例では、 FLOOR() 関数は常に 0を返しますが、 CEILING() 関数は常に 1を返します。
C. 1より大きな乱数を生成する
ランダム な浮動小数点 数の範囲を、 RAND() 関数に整数値と掛け合わせることでスケールできます。 以下の例は、0と10の間のランダムな浮動小数点を返します。
DECLARE @Constant AS INT;
SET @Constant = 10;
SELECT @Constant * RAND() AS RandomNumber;
GO
D: ランダムな整数を生成する
RAND()関数をスケーリングし、ROUND()、FLOOR()、またはCEILING()関数と組み合わせることでランダムな整数値を生成できます。 以下の例は、4 0 から 10までのランダムな整数を返します。
DECLARE @Constant AS INT;
SET @Constant = 10;
SELECT ROUND(@Constant * RAND(), 0) AS FirstRandomInteger,
FLOOR(@Constant * RAND()) AS SecondRandomInteger,
CEILING(@Constant * RAND()) AS ThirdRandomInteger;
GO
E. テーブルにランダムな値を挿入します
以下の例では、テーブル変数にランダムな 整数、 float、 bit の値を埋め込みます。
DECLARE @RandomTable TABLE (
RandomIntegers INT,
RandomFloats FLOAT,
RandomBits BIT);
DECLARE @RowCount AS INT;
DECLARE @Counter AS INT;
SET @RowCount = 10;
SET @Counter = 1;
WHILE @Counter <= @RowCount
BEGIN
INSERT INTO @RandomTable
VALUES (ROUND(10 * RAND(), 0), RAND(), CAST (ROUND(RAND(), 0) AS BIT));
SET @Counter = @Counter + 1;
END
SELECT *
FROM @RandomTable;
GO