I SQLite kan du använda random()
funktion för att generera ett pseudoslumptal.
Det här är bra, men värdet som returneras är mellan -9223372036854775808 och +9223372036854775807.
Vad händer om du behöver ett slumptal mellan 0 och 10? Eller säg 1 och 100?
Lyckligtvis kan du göra detta genom att kombinera random()
med abs()
och modulo-operatorn.
Slumptal mellan 0 och 10
Du kan använda följande kod för att generera ett pseudoslumptal mellan 0 och 10.
SELECT abs(random() % 10);
Här är ett exempel på att välja flera slumpmässiga värden.
SELECT
abs(random() % 10) AS R1,
abs(random() % 10) AS R2,
abs(random() % 10) AS R3;
Resultat:
R1 R2 R3 ---------- ---------- ---------- 2 8 5
Öka räckvidden
Naturligtvis kan du ändra värdet till vad du vill (förutsatt att det är inom random()
intervall av möjliga värden).
Här är det igen med intervallet ökat till mellan 0 och 100.
SELECT
abs(random() % 100) AS R1,
abs(random() % 100) AS R2,
abs(random() % 100) AS R3;
Resultat:
R1 R2 R3 ---------- ---------- ---------- 76 60 85
Slumptal mellan 1 och 10
Om du inte vill att noll ska vara en del av de möjliga resultaten kan du använda följande metod.
Följande kod genererar ett pseudoslumptal mellan 1 och 10.
SELECT abs(random()) % (10 - 1) + 1;
Här är ett exempel på att välja flera slumpmässiga värden.
SELECT
abs(random()) % (10 - 1) + 1 AS R1,
abs(random()) % (10 - 1) + 1 AS R2,
abs(random()) % (10 - 1) + 1 AS R3;
Resultat:
R1 R2 R3 ---------- ---------- ---------- 2 1 8