--- title: Math.random() slug: Web/JavaScript/Reference/Global_Objects/Math/random translation_of: Web/JavaScript/Reference/Global_Objects/Math/random ---
{{JSRef}}
La funzione Math.random()  ritorna un numero pseudo-casuale in virgola mobile compreso tra 0 e 1, con 0 incluso e 1 escluso (quindi nell'intervallo [0, 1)), scalabile al range desiderato. L'implementazione seleziona un numero (seme) iniziale utile all'algoritmo di generazione per restituire numeri randomici, il quale non può essere scelto o resettato dall'utente.
 

Math.random() non permette la generazione crittograficamente sicura dei numeri casuali, di conseguenza è altamente sconsigliato il suo impiego nell'ambito della sicurezza. Piuttosto sarebbe più corretto utilizzare la Web Crypto API instead, e più precisamente il metodo {{domxref("RandomSource.getRandomValues()", "window.crypto.getRandomValues()")}}.

Sintassi

Math.random()

Valore di ritorno

Un numero pseudo casuale in virgola mobile compreso tra 0 (incluso) e 1 (escluso).

Esempi

Bisogna notare che dal momento che i numeri in virgola mobile di JavaScript seguono lo standard IEEE 754 che arrotonda i numeri al numero pari più vicino, i range mostrati per la funzione sottostante non sono esatti (escludendo quello per Math.random()). Se si scelgono margini molto elevati (dell'ordine di 253  o più) è possibile, in casi estremamente rari, calcolare il limite superiore solitamente escluso.

Ottenere un numero tra [0, 1)

function getRandom() {
  return Math.random();
}

Ottenere un numero random tra due valori

Questo esempio restituisce un numero random tra due valori specificati. Il valore non è minore di (e può essere uguale a) min, nè maggiore (e nè uguale) a max. 

function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}

Ottenere un intero random tra due valori

Questo esempio restituisce un intero random tra due valori specificati. Il valore non è minore di min (oppure l'intero più grande di min se quest'ultimo non è un intero), nè maggiore (nè uguale) a max. 

function getRandomInt(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min)) + min; //Il max è escluso e il min è incluso
}

Si potrebbe utilizzare l'arrotondamento per ottenere questo, tuttavia così facendo i numeri casuali seguirebbero una distribuzione non uniforme, magari non accettabile.

Ottenere un intero random tra due valori con estremi inclusi

Le funzioni viste finora escludono sempre l'estremo superiore del range scelto. La funzione getRandomIntInclusive() descritta sotto permette di ottenere questo.

function getRandomIntInclusive(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min + 1)) + min; //Il max è incluso e il min è incluso
}

Specifiche

Specification Status Comment
{{SpecName('ES1')}} {{Spec2('ES1')}} Definizione iniziale. JS 1.0 (solo per UNIX) / JS 1.1. (tutte le piattaforme)
{{SpecName('ES5.1', '#sec-15.8.2.14', 'Math.random')}} {{Spec2('ES5.1')}}  
{{SpecName('ES6', '#sec-math.random', 'Math.random')}} {{Spec2('ES6')}}  
{{SpecName('ESDraft', '#sec-math.random', 'Math.random')}} {{Spec2('ESDraft')}}  

Compatibilità browser

{{Compat("javascript.builtins.Math.random")}}