Di SQL Server, T-SQL RAND()
fungsi memungkinkan Anda untuk menghasilkan nomor acak. Secara khusus, ini mengembalikan nilai float pseudo-acak dari 0 hingga 1, eksklusif.
Fungsi menerima argumen opsional yang menyediakan nilai benih. Untuk nilai benih apa pun, hasilnya akan selalu sama.
Sintaks
Sintaksnya seperti ini:
RAND ( [ seed ] )
Dimana benih adalah ekspresi integer (tinyint, smallint, atau int) yang memberikan nilai seed. Jika argumen ini tidak disediakan, maka SQL Server memberikan seed secara acak.
Contoh 1 – Tidak Ada Argumen
Berikut adalah contoh dasar untuk menunjukkan apa yang terjadi ketika kami tidak memberikan argumen.
SELECT RAND() Result;
Hasil:
+--------------------+ | Result | |--------------------| | 0.0354675287734768 | +--------------------+
Hasilnya tidak konstan – akan berbeda setiap kali Anda menjalankannya.
Berikut adalah contoh yang terjadi ketika kita menjalankan beberapa RAND()
berfungsi bersama.
SELECT RAND() 'Result 1', RAND() 'Result 2', RAND() 'Result 3';
Hasil:
+-------------------+------------------+--------------------+ | Result 1 | Result 2 | Result 3 | |-------------------+------------------+--------------------| | 0.999568268427369 | 0.40098746841349 | 0.0606836711764244 | +-------------------+------------------+--------------------+
Contoh 2 – Menggunakan Nilai Benih
Seperti yang disebutkan, Anda dapat memberikan argumen untuk menentukan nilai benih. Ini memungkinkan Anda untuk memengaruhi keluaran fungsi.
SELECT RAND(8) Result;
Hasil:
+-------------------+ | Result | |-------------------| | 0.713722424011731 | +-------------------+
Dalam hal ini, fungsi akan mengembalikan nilai yang sama setiap kali jika nilai argumen yang sama diberikan. Ini ditunjukkan dalam contoh berikut:
SELECT RAND(8) 'Result 1', RAND(8) 'Result 2', RAND(8) 'Result 3';
Hasil:
+-------------------+-------------------+-------------------+ | Result 1 | Result 2 | Result 3 | |-------------------+-------------------+-------------------| | 0.713722424011731 | 0.713722424011731 | 0.713722424011731 | +-------------------+-------------------+-------------------+
Kami menjalankan fungsi tiga kali. Dan karena kami menggunakan benih yang sama setiap kali, hasilnya semua sama.
Contoh 3 – Menggunakan RAND() sebagai Bagian dari Ekspresi
Anda dapat menggunakan RAND()
berfungsi sebagai bagian dari ekspresi.
SELECT RAND()*10 Result;
Hasil:
+------------------+ | Result | |------------------| | 3.32720913214171 | +------------------+
Contoh 4 – Membulatkan Hasil
Kami juga dapat menghapus bagian pecahan dengan menyarangkan fungsi di dalam fungsi seperti FLOOR()
atau CEILING()
.
SELECT CEILING(RAND()*10) Result;
Hasil:
+----------+ | Result | |----------| | 3 | +----------+
Contoh 5 – Mengembalikan Bilangan Bulat Acak Antara Dua Angka
Anda juga dapat menentukan bahwa angka acak harus berada di antara dua angka.
Berikut adalah contoh menghasilkan angka acak antara 5 dan 10 (inklusif).
SELECT FLOOR(RAND()*(10-5+1)+5) Result;
Hasil:
+----------+ | Result | |----------| | 9 | +----------+
Mari kita jalankan kode yang sama beberapa kali untuk melihat hasil yang bervariasi.
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';
Hasil:
+------------+------------+------------+ | Result 1 | Result 2 | Result 3 | |------------+------------+------------| | 10 | 7 | 6 | +------------+------------+------------+