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