Inizio del cambiamento

RANDOM o funzione scalare di RAND

La funzione RANDOM restituisce un valore casuale in virgola mobile compreso tra 0 e 1. Un argomento può essere specificato come valore di seme opzionale.

Leggere il diagramma della sintassiSalta diagramma di sintassi visivoRANDOM1RAND(espressione numerica)
Note:
  • 1 FL 506 RANDOM è un nome recentemente supportato per la funzione RAND.
Inizio del cambiamentoFine modifica

Lo schema è SYSIBM.

espressione numerica
Se viene specificata un'espressione numerica, questa viene utilizzata come valore iniziale. L'argomento deve essere un'espressione che restituisce un valore di un tipo di dati intero incorporato (SMALLINT o INTEGER). Il valore deve essere compreso tra 0 e 2.147.483.646.

L'argomento può anche essere una stringa di caratteri o un tipo di dati di stringa grafica. L'input stringa viene implicitamente convertito in un valore numerico di DECFLOAT(34) e quindi assegnato a un valore INTEGER.

Il risultato della funzione è un numero in virgola mobile a doppia precisione.

Il risultato può essere nullo; se l'argomento è nullo, il risultato è il valore nullo.

Un valore seme specifico, diverso da zero, produrrà la stessa sequenza di numeri casuali per un'istanza specifica di una funzione RANDOM in una query ogni volta che la query viene eseguita. Il valore del seme viene utilizzato solo per la prima chiamata di un'istanza della funzione RANDOM all'interno di un'istruzione. RANDOM(0) viene elaborato come un RANDOM().

Note

Determinismo:
RANDOM è una funzione non deterministica.

Esempi

Esempio 1
Supponiamo che la variabile host HRAND sia un INTEGER con valore 100. La seguente istruzione restituisce un numero a virgola mobile casuale nell'intervallo 0-1, come il valore approssimativo 0,0121398:
   SELECT RANDOM(:HRAND)
     FROM SYSIBM.SYSDUMMY1;
Esempio
Per generare valori in un intervallo numerico diverso da 0 a 1, moltiplicare la funzione RAND per la dimensione dell'intervallo desiderato. Ad esempio, per ottenere un numero casuale nell'intervallo 0-10, come il valore approssimativo 5.8731398, moltiplica la funzione per 10:
   SELECT (RANDOM(:HRAND) * 10)
     FROM SYSIBM.SYSDUMMY1;
Fine modifica