SQLite
 sql >> Datenbank >  >> RDS >> SQLite

So generieren Sie eine Zufallszahl innerhalb eines bestimmten Bereichs in SQLite

In SQLite können Sie random() verwenden Funktion zum Generieren einer Pseudozufallszahl.

Das ist großartig, aber der zurückgegebene Wert liegt zwischen -9223372036854775808 und +9223372036854775807.

Was ist, wenn Sie eine Zufallszahl zwischen 0 und 10 benötigen? Oder sagen wir, 1 und 100?

Glücklicherweise können Sie dies tun, indem Sie random() kombinieren mit abs() und der Modulo-Operator.

Zufallszahl zwischen 0 und 10

Sie können den folgenden Code verwenden, um eine Pseudozufallszahl zwischen 0 und 10 zu generieren.

SELECT abs(random() % 10);

Hier ist ein Beispiel für die Auswahl mehrerer zufälliger Werte.

SELECT 
  abs(random() % 10) AS R1,
  abs(random() % 10) AS R2,
  abs(random() % 10) AS R3;

Ergebnis:

R1          R2          R3        
----------  ----------  ----------
2           8           5         

Erhöhen Sie die Reichweite

Natürlich können Sie den Wert beliebig ändern (vorausgesetzt, er befindet sich innerhalb von random() Bereich möglicher Werte).

Hier ist es wieder mit einem erweiterten Bereich zwischen 0 und 100.

SELECT 
  abs(random() % 100) AS R1,
  abs(random() % 100) AS R2,
  abs(random() % 100) AS R3;

Ergebnis:

R1          R2          R3        
----------  ----------  ----------
76          60          85        

Zufallszahl zwischen 1 und 10

Wenn Sie nicht möchten, dass Null Teil der möglichen Ergebnisse ist, können Sie die folgende Methode verwenden.

Der folgende Code generiert eine Pseudo-Zufallszahl zwischen 1 und 10.

SELECT abs(random()) % (10 - 1) + 1;

Hier ist ein Beispiel für die Auswahl mehrerer zufälliger Werte.

SELECT 
  abs(random()) % (10 - 1) + 1 AS R1,
  abs(random()) % (10 - 1) + 1 AS R2,
  abs(random()) % (10 - 1) + 1 AS R3;

Ergebnis:

R1          R2          R3        
----------  ----------  ----------
2           1           8