W SQLite możesz użyć random()
funkcja do generowania liczby pseudolosowej.
To świetnie, ale zwracana wartość mieści się w zakresie od -9223372036854775808 do +9223372036854775807.
A jeśli potrzebujesz losowej liczby od 0 do 10? A może powiedzmy 1 i 100?
Na szczęście możesz to zrobić, łącząc random()
z abs()
i operator modulo.
Liczba losowa od 0 do 10
Możesz użyć poniższego kodu, aby wygenerować pseudolosową liczbę od 0 do 10.
SELECT abs(random() % 10);
Oto przykład wyboru wielu losowych wartości.
SELECT
abs(random() % 10) AS R1,
abs(random() % 10) AS R2,
abs(random() % 10) AS R3;
Wynik:
R1 R2 R3 ---------- ---------- ---------- 2 8 5
Zwiększ zasięg
Oczywiście możesz zmienić wartość na jakąkolwiek chcesz (zakładając, że znajduje się ona w random()
zakres możliwych wartości).
Oto znowu z zasięgiem zwiększonym do od 0 do 100.
SELECT
abs(random() % 100) AS R1,
abs(random() % 100) AS R2,
abs(random() % 100) AS R3;
Wynik:
R1 R2 R3 ---------- ---------- ---------- 76 60 85
Liczba losowa od 1 do 10
Jeśli nie chcesz, aby zero było częścią możliwych wyników, możesz użyć następującej metody.
Poniższy kod generuje pseudolosową liczbę od 1 do 10.
SELECT abs(random()) % (10 - 1) + 1;
Oto przykład wyboru wielu losowych wartości.
SELECT
abs(random()) % (10 - 1) + 1 AS R1,
abs(random()) % (10 - 1) + 1 AS R2,
abs(random()) % (10 - 1) + 1 AS R3;
Wynik:
R1 R2 R3 ---------- ---------- ---------- 2 1 8