--- title: Math.random() slug: Web/JavaScript/Reference/Global_Objects/Math/random translation_of: Web/JavaScript/Reference/Global_Objects/Math/random ---
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()")}}.
Math.random()
Un numero pseudo casuale in virgola mobile compreso tra 0 (incluso) e 1 (escluso).
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.
function getRandom() { return Math.random(); }
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; }
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.
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 }
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')}} |
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
{{Compat("javascript.builtins.Math.random")}}