Math.random()
=============

 La función **`Math.random()`** devuelve un número de coma flotante pseudo-aleatorio, comprendido en el rango de 0 a menor que 1 (es decir, incluido el 0 pero no el 1), con una distribución aproximadamente uniforme en este rango. Dicho rango puede ser ampliado hasta los valores deseados.
 La implementación selecciona la semilla inicial del algoritmo de generación de números aleatorios, no pudiendo ser esta elegida o restablecida por el usuario.

Pruébalo
--------

**Nota:** `Math.random()` no proporciona números aleatorios criptográficamente seguros, por lo que no debe ser usado para cualquier cosa relacionada con seguridad.
 En su lugar, puede hacer uso de la API web *Crypto*. Concretamente, puede utilizar el método `window.crypto.getRandomValues()`.


Sintaxis
--------


```js
Math.random();
```

### Valor de retorno

Un número de coma flotante pseudo-aleatorio entre los números 0 (incluido) y 1 (excluido).

Ejemplos
--------

Tenga en cuenta que los números de coma flotante en JavaScript cumplen con la norma IEEE 754. Debido a esto, dichos números tienen un comportamiento de redondeo al evento más cercano. Es por eso que en las funciones descritas en los siguientes ejemplos (excluyendo a la propia `Math.random()` ) los rangos declarados no son exactos. Si se eligen límites extremadamente grandes (2^53 o superiores), es posible, en casos extremadamente raros, calcular el "habitualmente excluido" límite superior.

### Obtener un número aleatorio entre 0 (incluido) y 1 (excluido)


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

### Obtener un número aleatorio entre dos valores determinados

Este ejemplo devuelve un número aleatorio situado entre dos valores específicos. El valor devuelto será mayor o igual que `min` y menor que `max`.


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

### Obtener un número entero entre dos valores determinados

Este ejemplo devuelve un número aleatorio situado entre los valores especificados. El valor devuelto no será más bajo que `min` (o el siguiente entero más alto, en caso de que *min* no sea un número entero), y será menor (pero no igual) que `max` .


```js
// Notesé que también en este caso `min` será incluido y `max` excluido
function getRandomInt(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() \* (max - min) + min);
}
```


**Nota:** Puede ser tentador utilizar `Math.round()` para conseguir lo mismo, pero al hacerlo, los números aleatorios devueltos no seguirán una distribución uniforme. Esto podría no ser aceptable para sus necesidades.

### Obtener un número entero aleatorio entre dos valores (incluyendo ambos)

La función `getRandomInt()` descrita anteriormente incluye el valor mínimo, pero excluye al máximo. ¿Y si necesitamos que el resultado incluya tanto al mínimo como al máximo? La siguiente función `getRandomIntInclusive()` lo consigue.


```js
function getRandomIntInclusive(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() \* (max - min + 1) + min);
}
// Ahora, tanto el valor mínimo como el máximo están incluidos en el resultado.
```

Especificaciones
----------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-math.random |

Compatibilidad con navegadores
------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Véase también
-------------

* `window.crypto.getRandomValues()`