SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Como gerar um número aleatório dentro de um intervalo especificado no SQLite


No SQLite, você pode usar o random() função para gerar um número pseudo-aleatório.

Isso é ótimo, mas o valor retornado está entre -9223372036854775808 e +9223372036854775807.

E se você precisar de um número aleatório entre 0 e 10? Ou digamos, 1 e 100?

Felizmente, você pode fazer isso combinando random() com abs() e o operador módulo.

Número aleatório entre 0 e 10


Você pode usar o código a seguir para gerar um número pseudo-aleatório entre 0 e 10.
SELECT abs(random() % 10);

Aqui está um exemplo de seleção de vários valores aleatórios.
SELECT 
  abs(random() % 10) AS R1,
  abs(random() % 10) AS R2,
  abs(random() % 10) AS R3;

Resultado:
R1          R2          R3        
----------  ----------  ----------
2           8           5         

Aumente o intervalo


Claro, você pode alterar o valor para o que quiser (supondo que esteja dentro do random() faixa de valores possíveis).

Aqui está novamente com o intervalo aumentado para entre 0 e 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 aleatório entre 1 e 10


Se você não quiser que zero faça parte dos resultados possíveis, você pode usar o seguinte método.

O código a seguir gera um número pseudo-aleatório entre 1 e 10.
SELECT abs(random()) % (10 - 1) + 1;

Aqui está um exemplo de seleção de vários valores aleatórios.
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