SQLite
 sql >> Database >  >> RDS >> SQLite

Come generare un numero casuale all'interno di un intervallo specificato in SQLite

In SQLite, puoi usare random() funzione per generare un numero pseudo-casuale.

Ottimo, ma il valore restituito è compreso tra -9223372036854775808 e +9223372036854775807.

E se avessi bisogno di un numero casuale compreso tra 0 e 10? O dire, 1 e 100?

Fortunatamente puoi farlo combinando random() con abs() e l'operatore modulo.

Numero casuale compreso tra 0 e 10

Puoi utilizzare il codice seguente per generare un numero pseudo-casuale compreso tra 0 e 10.

SELECT abs(random() % 10);

Ecco un esempio di selezione di più valori casuali.

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

Risultato:

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

Aumenta la portata

Naturalmente, puoi cambiare il valore in qualsiasi cosa tu voglia (supponendo che sia all'interno di random() gamma di valori possibili).

Eccolo di nuovo con l'intervallo aumentato tra 0 e 100.

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

Risultato:

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

Numero casuale compreso tra 1 e 10

Se non vuoi che zero faccia parte dei possibili risultati, puoi utilizzare il metodo seguente.

Il codice seguente genera un numero pseudocasuale compreso tra 1 e 10.

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

Ecco un esempio di selezione di più valori casuali.

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

Risultato:

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