SQLite random()
fungsi mengembalikan bilangan bulat pseudo-acak antara -9223372036854775808 dan +9223372036854775807.
Bilangan acak semu adalah bilangan yang tampak acak, tetapi tidak benar-benar acak. Angka pseudo-acak tidak benar-benar acak karena nilainya dihasilkan oleh benih yang diketahui. Namun, nomor pseudo-acak akan tampak acak jika pengguna tidak memiliki pengetahuan tentang seed atau algoritme yang membuatnya.
Oleh karena itu, bilangan pseudo-acak sering dianggap cukup baik untuk banyak aplikasi.
Contoh
Berikut adalah contoh menghasilkan angka pseudo-acak dengan random()
fungsi.
SELECT random();
Hasil:
-882536775989953141
Hanya Nilai Positif
Anda dapat menggabungkan random()
dengan abs()
untuk menghasilkan nilai positif saja.
SELECT abs(random());
Dalam hal ini, jika random()
menghasilkan nilai negatif, abs()
akan mengembalikan nilai absolut sebagai gantinya.
Untuk mendemonstrasikan bagaimana abs()
berfungsi, inilah yang terjadi jika saya meneruskan nomor acak (negatif) dari contoh pertama ke abs()
fungsi:
SELECT abs(-882536775989953141);
Hasil:
882536775989953141
Jadi jika kita melewati random()
ke abs()
, dan random()
menghasilkan nilai negatif, abs()
akan mengembalikan nilai tersebut sebagai nilai positif.
Nilai Antara 0 dan 100
Berikut adalah contoh menghasilkan angka positif antara 0 dan 100.
SELECT abs(random() % 100);
Berikut ini contoh pemilihan beberapa nilai acak.
SELECT
abs(random() % 100) AS R1,
abs(random() % 100) AS R2,
abs(random() % 100) AS R3;
Hasil:
R1 R2 R3 ---------- ---------- ---------- 17 79 90
Kembalikan Baris Acak
Anda dapat menggunakan random()
dalam ORDER BY
klausa kueri database untuk mengembalikan baris acak.
Ini contohnya.
SELECT * FROM Artist
ORDER BY random() LIMIT 5;
Hasil:
ArtistId Name ---------- ---------------------------------------- 131 Smashing Pumpkins 127 Red Hot Chili Peppers 169 Black Eyed Peas 60 Santana Feat. Dave Matthews 240 Gustav Mahler
Dan inilah yang saya dapatkan jika saya menjalankannya lagi:
ArtistId Name ---------- ---------------------------------------- 234 Orchestra of The Age of Enlightenment 126 Raul Seixas 76 Creedence Clearwater Revival 182 Nega Gizza 63 Santana Feat. Lauryn Hill & Cee-Lo
Jika Anda memiliki tabel yang besar, Anda mungkin ingin mengubah kueri Anda menjadi seperti ini:
SELECT * FROM Artist
WHERE ArtistId IN
(SELECT ArtistId FROM Artist ORDER BY random() LIMIT 5);
Hasil:
ArtistId Name ---------- ---------------------------------------- 45 Sandra De Sá 105 Men At Work 110 Nirvana 205 Chris Cornell 267 Göteborgs Symfoniker & Neeme Järvi