Sdílet prostřednictvím


RAND (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analyticssql database v Microsoft Fabric

Vrací pseudonáhodnou plovoucí hodnotu z 0 přes 1, exkluzivní.

Transact-SQL konvence syntaxe

Syntaxe

RAND ( [ seed ] )

Poznámka:

Tato syntaxe není podporována bezserverovým fondem SQL ve službě Azure Synapse Analytics.

Arguments

seed

Celočíselný výraz (tinyint, smallint nebo int), který udává počáteční hodnotu. Pokud seed není specifikován, SQL Server Database Engine náhodně přiřadí seed hodnotu. Pro určenou počáteční hodnotu je výsledek vždy stejný.

Návratové typy

float

Poznámky

Opakovaná volání s RAND() hodnotou seedu vracejí stejné výsledky.

  • Pro jedno spojení, pokud RAND() je voláno s danou počáteční hodnotou, všechna následující volání RAND() přinášejí výsledky založené na zasazeném RAND() volání. Například následující dotaz vždy vrací stejnou posloupnost čísel.

    SELECT RAND(100),
            RAND(),
            RAND();
    
  • Když použijete RAND() funkci v dotazu UPDATE OR INSERT , všechny ovlivněné řádky dostanou stejnou hodnotu.

Examples

A. Vytvořte čtyři různá náhodná čísla

Následující příklad produkuje čtyři různá náhodná čísla generovaná touto funkcí.RAND()

DECLARE @counter AS SMALLINT;

SET @counter = 1;

WHILE @counter < 5
    BEGIN
        SELECT RAND() AS RandomNumber;
        SET @counter = @counter + 1;
    END
GO

B. Náhodně generujte 0 nebo 1

Následující příklad používá ROUND() funkci k náhodnému vrácení buď nebo 01.

SELECT ROUND(RAND(), 0) AS ZeroOrOne;
GO

Poznámka:

V tomto příkladu FLOOR() funkce vždy vrací 0, zatímco CEILING() funkce vždy vrací 1.

C. Generujte náhodná čísla větší než 1

Rozsah náhodného floatu můžete škálovat vynásobením RAND() funkce celočíselnou hodnotou. Následující příklad vrací náhodný float mezi 0 a .10

DECLARE @Constant AS INT;
SET @Constant = 10;

SELECT @Constant * RAND() AS RandomNumber;
GO

D. Generujte náhodná celá čísla

Náhodnou celočíselnou hodnotu můžete vygenerovat škálováním RAND() funkce a jejím kombinováním s ROUND(), FLOOR(), nebo CEILING() funkcemi. Následující příklad vrací náhodné celé číslo mezi 0 a 10, včetně .

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. Vložte náhodné hodnoty do tabulky

Následující příklad naplní tabulkovou proměnnou náhodnými hodnotami int, float a 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