SQLite
 sql >> Base de données >  >> RDS >> SQLite

Comment générer un nombre aléatoire dans une plage spécifiée dans SQLite

Dans SQLite, vous pouvez utiliser le random() fonction pour générer un nombre pseudo-aléatoire.

C'est très bien, mais la valeur renvoyée est comprise entre -9223372036854775808 et +9223372036854775807.

Et si vous avez besoin d'un nombre aléatoire entre 0 et 10 ? Ou dites, 1 et 100 ?

Heureusement, vous pouvez le faire en combinant random() avec abs() et l'opérateur modulo.

Nombre aléatoire entre 0 et 10

Vous pouvez utiliser le code suivant pour générer un nombre pseudo-aléatoire entre 0 et 10.

SELECT abs(random() % 10);

Voici un exemple de sélection de plusieurs valeurs aléatoires.

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

Résultat :

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

Augmenter la portée

Bien sûr, vous pouvez changer la valeur à tout ce que vous voulez (en supposant qu'elle se trouve dans le random() plage de valeurs possibles).

Le voici à nouveau avec la plage augmentée entre 0 et 100.

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

Résultat :

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

Nombre aléatoire entre 1 et 10

Si vous ne voulez pas que zéro fasse partie des résultats possibles, vous pouvez utiliser la méthode suivante.

Le code suivant génère un nombre pseudo-aléatoire entre 1 et 10.

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

Voici un exemple de sélection de plusieurs valeurs aléatoires.

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

Résultat :

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