Math.random()
Baseline Widely available
El método estático Math.random() devuelve un número en coma flotante pseudo-aleatorio dentro del intervalo [0, 1) — es decir, mayor o igual que 0 y estrictamente menor que 1, con distribución aproximadamente uniforme. Este intervalo puede escalarse para obtener cualquier otro rango deseado.
La elección de la semilla y del algoritmo de generación dependen de la implementación, y no son configurables por el usuario.
Try it
JavaScript Demo: Math.random()
function getRandomInt(max) { return Math.floor(Math.random() * max); } console.log(getRandomInt(3)); // Expected output: 0, 1 or 2 console.log(getRandomInt(1)); // Expected output: 0 console.log(Math.random()); // Expected output: a number from 0 to <1
- > 1
- > 0
- > 0.22013460912307536
- > 2
- > 0
- > 0.5831973397051076
Note: Los valores que devuelve Math.random() no son criptográficamente seguros. Si tu caso requiere aleatoriedad segura, usa crypto.getRandomValues() o, en Node.js, crypto.randomUUID().
Syntax
Math.random()
Parameters
Ninguno.
Return value
Un número en coma flotante dentro del intervalo semi-abierto [0, 1).
Examples
Los números en coma flotante en JavaScript siguen IEEE 754 con redondeo al par más cercano. Por ello las funciones de los ejemplos no garantizan los límites de forma estricta para magnitudes muy grandes (cercanas a 253).
Getting a random number between 0 (inclusive) and 1 (exclusive)
function getRandom() {
return Math.random();
}
Getting a random number between two values
El siguiente ejemplo devuelve un número aleatorio mayor o igual que min y estrictamente menor que max.
function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}
Getting a random integer between two values
Devuelve un entero aleatorio mayor o igual que min y estrictamente menor que max. Si min no es entero, se redondea hacia arriba.
// `min` incluido, `max` excluido
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min) + min);
}
Note: Usar Math.round() para esto mismo produce una distribución no uniforme: los valores de los extremos aparecen con la mitad de probabilidad que los del centro.
Getting a random integer between two values, inclusive
Si necesitas que ambos extremos del intervalo aparezcan con la misma probabilidad, súmale 1 al rango antes del truncado:
function getRandomIntInclusive(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1) + min);
}
// Ahora `min` y `max` están ambos incluidos.
Specifications
| Specification |
|---|
ECMAScript® Language Specification# sec-math.random |
Browser compatibility
| desktop | mobile | server | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
| random | 1 | 12 | 1 | 3 | 1 | 18 | 4 | 10.1 | 1 | 1.0 | 4.4 | 1 | 1.0 | 1.0 | 0.10 |