sql >> Base de Datos >  >> RDS >> SQLite

Cómo generar un número aleatorio dentro de un rango específico en SQLite

En SQLite, puede usar random() función para generar un número pseudoaleatorio.

Esto es genial, pero el valor devuelto está entre -9223372036854775808 y +9223372036854775807.

¿Qué sucede si necesita un número aleatorio entre 0 y 10? O digamos, 1 y 100?

Afortunadamente puedes hacer esto combinando random() con abs() y el operador módulo.

Número aleatorio entre 0 y 10

Puede usar el siguiente código para generar un número pseudoaleatorio entre 0 y 10.

SELECT abs(random() % 10);

Este es un ejemplo de cómo seleccionar varios valores aleatorios.

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

Resultado:

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

Aumentar el rango

Por supuesto, puede cambiar el valor a cualquier cosa que desee (suponiendo que esté dentro de random() rango de valores posibles).

Aquí está de nuevo con el rango aumentado entre 0 y 100.

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

Resultado:

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

Número aleatorio entre 1 y 10

Si no desea que el cero sea parte de los posibles resultados, puede utilizar el siguiente método.

El siguiente código genera un número pseudoaleatorio entre 1 y 10.

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

Este es un ejemplo de cómo seleccionar varios valores aleatorios.

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

Resultado:

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