In SQLite kun je de random()
. gebruiken functie om een pseudo-willekeurig getal te genereren.
Dit is geweldig, maar de geretourneerde waarde ligt tussen -9223372036854775808 en +9223372036854775807.
Wat als u een willekeurig getal tussen 0 en 10 nodig heeft? Of zeg, 1 en 100?
Gelukkig kun je dit doen door random()
. te combineren met abs()
en de modulo-operator.
Willekeurig getal tussen 0 en 10
U kunt de volgende code gebruiken om een pseudo-willekeurig getal tussen 0 en 10 te genereren.
SELECT abs(random() % 10);
Hier is een voorbeeld van het selecteren van meerdere willekeurige waarden.
SELECT
abs(random() % 10) AS R1,
abs(random() % 10) AS R2,
abs(random() % 10) AS R3;
Resultaat:
R1 R2 R3 ---------- ---------- ---------- 2 8 5
Vergroot het bereik
Natuurlijk kunt u de waarde wijzigen in alles wat u maar wilt (ervan uitgaande dat het binnen de random()
valt bereik van mogelijke waarden).
Hier is het weer met het bereik verhoogd tot tussen 0 en 100.
SELECT
abs(random() % 100) AS R1,
abs(random() % 100) AS R2,
abs(random() % 100) AS R3;
Resultaat:
R1 R2 R3 ---------- ---------- ---------- 76 60 85
Willekeurig getal tussen 1 en 10
Als u niet wilt dat nul deel uitmaakt van de mogelijke uitkomsten, kunt u de volgende methode gebruiken.
De volgende code genereert een pseudo-willekeurig getal tussen 1 en 10.
SELECT abs(random()) % (10 - 1) + 1;
Hier is een voorbeeld van het selecteren van meerdere willekeurige waarden.
SELECT
abs(random()) % (10 - 1) + 1 AS R1,
abs(random()) % (10 - 1) + 1 AS R2,
abs(random()) % (10 - 1) + 1 AS R3;
Resultaat:
R1 R2 R3 ---------- ---------- ---------- 2 1 8