Bagikan melalui


RAND (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL Database Azure SQL Managed Instance Azure Synapse AnalyticsSQL database di Microsoft Fabric

Mengembalikan nilai float pseudo-acak dari 0 melalui 1, eksklusif.

Konvensi sintaks transact-SQL

Sintaksis

RAND ( [ seed ] )

Catatan

Sintaks ini tidak didukung oleh kumpulan SQL tanpa server di Azure Synapse Analytics.

Argumen

biji

Ekspresi bilangan bulat (tinyint, smallint, atau int) yang memberikan nilai benih. Jika seed tidak ditentukan, SQL Server Database Engine menetapkan nilai seed secara acak. Untuk nilai seed tertentu, hasil yang dikembalikan selalu sama.

Jenis yang dikembalikan

float

Keterangan

Panggilan RAND() berulang dengan nilai seed yang sama mengembalikan hasil yang sama.

  • Untuk satu koneksi, jika RAND() dipanggil dengan nilai seed tertentu, semua panggilan RAND() hasil hasil berikutnya berdasarkan panggilan seeded RAND() . Misalnya, kueri berikut selalu mengembalikan urutan angka yang sama.

    SELECT RAND(100),
            RAND(),
            RAND();
    
  • Saat Anda menggunakan RAND() fungsi dalam kueri UPDATE atau INSERT , semua baris yang terpengaruh mendapatkan nilai yang sama.

Contoh

A. Buat empat angka acak yang berbeda

Contoh berikut menghasilkan empat angka acak berbeda yang dihasilkan oleh RAND() fungsi .

DECLARE @counter AS SMALLINT;

SET @counter = 1;

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

B. Hasilkan 0 atau 1 secara acak

Contoh berikut menggunakan fungsi untuk ROUND() mengembalikan salah satu 0 atau 1.

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

Catatan

Dalam contoh ini, FLOOR() fungsi selalu mengembalikan 0, sedangkan CEILING() fungsi selalu mengembalikan 1.

C. Hasilkan angka acak lebih besar dari 1

Anda dapat menskalakan rentang float acak dengan mengalikan RAND() fungsi dengan nilai bilangan bulat. Contoh berikut mengembalikan float acak antara 0 dan 10.

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

SELECT @Constant * RAND() AS RandomNumber;
GO

D. Hasilkan bilangan bulat acak

Anda dapat menghasilkan nilai bilangan bulat acak dengan menskalakan RAND() fungsi dan menggabungkannya dengan ROUND()fungsi , FLOOR(), atau CEILING() . Contoh berikut mengembalikan bilangan bulat acak antara 0 dan 10, inklusif.

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. Menyisipkan nilai acak ke dalam tabel

Contoh berikut mengisi variabel tabel dengan nilai int, float, dan bit acak.

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