V SQLite můžete použít random()
funkce pro generování pseudonáhodného čísla.
To je skvělé, ale vrácená hodnota je mezi -9223372036854775808 a +9223372036854775807.
Co když potřebujete náhodné číslo mezi 0 a 10? Nebo řekněme 1 a 100?
Naštěstí to můžete udělat kombinací random()
pomocí abs()
a operátor modulo.
Náhodné číslo mezi 0 a 10
Následující kód můžete použít ke generování pseudonáhodného čísla mezi 0 a 10.
SELECT abs(random() % 10);
Zde je příklad výběru více náhodných hodnot.
SELECT
abs(random() % 10) AS R1,
abs(random() % 10) AS R2,
abs(random() % 10) AS R3;
Výsledek:
R1 R2 R3 ---------- ---------- ---------- 2 8 5
Zvětšit rozsah
Hodnotu samozřejmě můžete změnit na cokoli chcete (za předpokladu, že je v rámci random()
rozsah možných hodnot).
Zde je to opět s rozsahem zvýšeným na 0 až 100.
SELECT
abs(random() % 100) AS R1,
abs(random() % 100) AS R2,
abs(random() % 100) AS R3;
Výsledek:
R1 R2 R3 ---------- ---------- ---------- 76 60 85
Náhodné číslo mezi 1 a 10
Pokud nechcete, aby nula byla součástí možných výsledků, můžete použít následující metodu.
Následující kód generuje pseudonáhodné číslo mezi 1 a 10.
SELECT abs(random()) % (10 - 1) + 1;
Zde je příklad výběru více náhodných hodnot.
SELECT
abs(random()) % (10 - 1) + 1 AS R1,
abs(random()) % (10 - 1) + 1 AS R2,
abs(random()) % (10 - 1) + 1 AS R3;
Výsledek:
R1 R2 R3 ---------- ---------- ---------- 2 1 8