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