110 lines
4.1 KiB
Markdown
110 lines
4.1 KiB
Markdown
|
---
|
||
|
title: Random Method
|
||
|
localeTitle: Método aleatorio
|
||
|
---
|
||
|
## Método aleatorio
|
||
|
|
||
|
El `Math.random()` JavaScript `Math.random()` es un excelente método incorporado para producir números aleatorios. Cuando se `Math.random()` , devuelve un número aleatorio que puede estar en cualquier lugar entre 0 y 1. El 0 se incluye y 1 se excluye.
|
||
|
|
||
|
### Generando un número de punto flotante al azar entre 0 y 1
|
||
|
|
||
|
El método `Math.random()` devolverá un número de coma flotante (decimal) mayor o igual a 0 y menor que (pero nunca igual a) 1. En otras palabras, `0 <= x < 1` . Por ejemplo:
|
||
|
|
||
|
```JavaScript
|
||
|
console.log(Math.random());
|
||
|
// 0.7069207248635578
|
||
|
|
||
|
console.log(Math.random());
|
||
|
// 0.765046694794209
|
||
|
|
||
|
console.log(Math.random());
|
||
|
// 0.14069121642698246
|
||
|
```
|
||
|
|
||
|
(Por supuesto, los números que se devuelven serán diferentes cada vez. Esto se asumirá para todos los ejemplos siguientes: se producirán resultados diferentes en cada pase).
|
||
|
|
||
|
Para obtener un número aleatorio entre un rango mayor, multiplique el resultado de `Math.random()` por un número.
|
||
|
|
||
|
### Generar un número de punto flotante aleatorio entre 0 y un máximo especificado
|
||
|
|
||
|
Por lo general, no necesita números aleatorios entre 0 y 1, necesita números más grandes o incluso números enteros.
|
||
|
|
||
|
Por ejemplo, si desea un número de punto flotante aleatorio entre 0 y 10, podría usar:
|
||
|
|
||
|
```JavaScript
|
||
|
var x = Math.random()*10;
|
||
|
|
||
|
console.log(x);
|
||
|
// 4.133793901445541
|
||
|
```
|
||
|
|
||
|
### Generando un número de punto flotante al azar dentro de un rango
|
||
|
|
||
|
Si necesita un número de punto flotante aleatorio que oscile entre dos números específicos, podría hacer algo como esto:
|
||
|
|
||
|
```JavaScript
|
||
|
var min = 83.1;
|
||
|
var max = 193.36;
|
||
|
|
||
|
var x = Math.random()*(max - min)+min;
|
||
|
|
||
|
console.log(x);
|
||
|
// 126.94014012699063
|
||
|
```
|
||
|
|
||
|
### Generando un entero aleatorio entre 0 y un máximo
|
||
|
|
||
|
A menudo se necesitan números enteros. Para hacer esto, tendrá que usar algunos otros métodos del objeto `Math` , `Math.floor()` (redondea al entero más cercano) y `Math.ceil()` (redondea al entero más cercano).
|
||
|
|
||
|
Por ejemplo, si necesita seleccionar al azar de una matriz de 10 elementos, necesitará un número aleatorio entre 0 y 9 inclusive (recuerde que las matrices están indexadas en cero).
|
||
|
|
||
|
```JavaScript
|
||
|
var x = Math.floor(Math.random()*10);
|
||
|
|
||
|
console.log(x);
|
||
|
// 7
|
||
|
```
|
||
|
|
||
|
(Recuerde que `Math.random()` nunca devolverá exactamente 1, por lo que `Math.random()*10` nunca devolverá exactamente 10. Esto significa que después de redondear hacia abajo, el resultado siempre será 9 o menos).
|
||
|
|
||
|
### Generando un entero aleatorio entre 1 y un máximo
|
||
|
|
||
|
Si necesita un número aleatorio con un número mínimo de 1 (por ejemplo, elegir un día aleatorio en enero), puede usar el método `Math.ceil()` .
|
||
|
|
||
|
```JavaScript
|
||
|
var x = Math.ceil(Math.random()*31);
|
||
|
|
||
|
console.log(x);
|
||
|
// 23
|
||
|
```
|
||
|
|
||
|
Otra forma habría sido usar la función anterior (usando `Math.floor()` ) y agregarle 1:
|
||
|
|
||
|
```JavaScript
|
||
|
var x = Math.floor(Math.random()*31)+1;
|
||
|
|
||
|
console.log(x);
|
||
|
// 17
|
||
|
```
|
||
|
|
||
|
### Generando un entero aleatorio dentro de un rango
|
||
|
|
||
|
Por último, ocasionalmente necesitas un entero aleatorio entre dos enteros específicos. Por ejemplo, si está intentando recoger boletos de la rifa y conoce los números del número más bajo y más grande:
|
||
|
|
||
|
```JavaScript
|
||
|
var min = 1718;
|
||
|
var max = 3429;
|
||
|
|
||
|
var x = Math.floor(Math.random()*(max-min+1)+min);
|
||
|
|
||
|
console.log(x);
|
||
|
//2509
|
||
|
```
|
||
|
|
||
|
### ¿Qué tan aleatorio es Math.random ()?
|
||
|
|
||
|
Puede señalarse que el número devuelto por `Math.random()` es un número pseudoaleatorio ya que ninguna computadora puede generar un número verdaderamente aleatorio, que muestre aleatoriedad en todas las escalas y en todos los tamaños de conjuntos de datos. Sin embargo, el número pseudoaleatorio generado por `Math.random()` suele ser suficiente para las necesidades de casi cualquier programa que pueda escribir. La no aleatoriedad real solo se hace evidente en conjuntos de números astronómicamente grandes o cuando se necesitan decimales extraordinariamente precisos.
|
||
|
|
||
|
### Más información:
|
||
|
|
||
|
* Documentación: [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random)
|