Build TB-scale apps with Redis Flex. Keep hot data in RAM, tier the rest to SSD, and tune cost vs. performance Learn more
Ad

Esta página fue traducida del inglés por la comunidad. Conoce más y únete.

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

js
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)

js
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.

js
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.

js
// `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:

js
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
ChromeEdgeFirefoxOperaSafari Chrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung InternetWebView AndroidWebView on iOS BunDenoNode.js
random 112131 18410.111.04.41 1.01.00.10

See also

Help improve MDN

Was this page helpful to you? Yes · No

Learn how to contribute. This page was last modified on 27 Jul 2025 by MDN contributors.

Discover Thunderbird’s new desktop & mobile apps. Get Thunderbird →