by kirupa with code by Scott Ruttencutter | filed under JavaScript 101
Aprende a generar un rango de números aleatorios que no solo caen dentro de un rango superior e inferior que especifique, sino que la frecuencia ¡equilibrado! ⚖️
para muchas situaciones que van desde operaciones de lanzamiento de monedas hasta animaciones de procedimientos, querrá trabajar con números cuyos valores sean bitunpredictables., Usted querrá trabajar con números que son aleatorios. Generar un número aleatorio es fácil. Está integrado en JavaScript y expuesto a través de la infame Matemática.función random (). Ahora, si esta función ya existe, ¿qué estamos haciendo aquí? Bueno, el uso de la función es solo una parte de ser capaz de generar un número aleatorio. Para la mayoría de las situaciones de la vida real, no queremos cualquier número aleatorio. Vamos a querer un tipo específico de número aleatorio-uno que cae dentro de un rango que definimos. Hay algunas trampas sutiles con eso, y eso es lo que explorará el resto de estas secciones.
¡adelante!,
solo Muéstrame el Código
antes de profundizar en los detalles, si todo lo que quieres es el código para generar un número entero aleatorio dentro de un rango establecido, usa matemáticas.random () con la siguiente fórmula:
Math.floor(Math.random() * (1 + High - Low)) + Low
El valor de High es el número aleatorio más grande que desea generar. El valor de low es el número aleatorio más pequeño que le gustaría generar en su lugar. Cuando ejecuta este código, lo que obtendrá es un número que cae aleatoriamente en algún lugar entre los límites especificados por alto y bajo.,
Aquí hay algunos ejemplos:
para simplificar las cosas, aquí hay una función que puede usar en su lugar:
function getRandomNumber(low, high) { let r = Math.floor(Math.random() * (high - low + 1)) + low; return r;}
simplemente llame a getRandomNumber y pase el límite inferior y superior como argumentos:
Eso es todo lo que hay para generar un número aleatorio que se encuentre dentro de un rango que especifique.
se explica la adición de 1
en JavaScript, Math.,random () devuelve un número mayor o igual a 0 pero menor que 1:
otra forma de declarar es (0 <= n < 1) donde n es el número que está buscando. Esta incapacidad para las matemáticas.al azar para conseguir realmente muy cerca de 1, pero nunca muy llegar allí es en gran medida por qué conseguir un número aleatorio entre un rango de números es así…inelegant:
Math.floor(Math.random() * (1 + High - Low)) + Low
mirando nuestro enfoque un poco más lejos, comencemos con la mayor rareza, la adición del 1. Aquí es por qué lo incluimos., Ya hemos dicho muchas veces que las matemáticas.la función random () nunca devolverá un 1 como su valor. Devolverá algo parecido.9999999, pero nunca será un 1. También queremos un número redondo que no incluya decimales. Hay varios enfoques para redondear un número, pero estamos redondeando la salida por Matemáticas.piso donde redondeamos a la nearestinteger. Este redondeo hacia abajo es el problema.
si no añadimos el 1, debido a cómo Matemáticas.el piso funciona, nunca obtendrá la máxima respuesta posible cuando multiplicamos el resultado de alto-bajo por Matemáticas.aleatorio()., Esto probablemente no tiene mucho sentido, así que echemos un vistazo a un ejemplo donde intentar obtener un número aleatorio sin agregar el 1.
lo que queremos hacer es generar un número aleatorio entre 10 y 50. Ignorando el 1, así es como se verá la expresión:
Math.floor(Math.random() * 40) + 10
La Matemática.random () * 40 nunca devolverá un 40 porque eso requeriría Matemáticas.random() para devolver un 1…seamos optimistas y digamos que Matemáticas.random() devuelve a .9999, y multiplicamos thatvalue por 40. El valor que se devuelve será 39.996. Adivina qué Matemáticas.piso de 39.,996 va a ser? ¡Van a ser 39! Cuando este 39 Se añade a 10, se obtiene avalue de 49. Usted no tiene ninguna manera concebible de obtener una respuesta de 50 que es el número alto en su rango de valores. La única solución es agregar un 1 a la operación:
Math.floor(Math.random() * 41) + 10
Una vez que lo hagas, podrás generar todos los números dentro del rango de tus números altos y bajos, 10 y 50 respectivamente, con la misma frecuencia.
conclusión
generar números aleatorios correctamente es un problema desafiante., Parece muy simple, pero conseguir que el rango de números no solo sea correcto, sino que también ocurra con la misma frecuencia es donde ocurren los desafíos. Mientras esté consciente de las limitaciones de los diversos métodos de redondeo, puede reemplazar las matemáticas.piso con Matemáticas.ceil o, si eres realmente atrevido, Matemáticas.ronda.
¿Tienes una pregunta o simplemente quieres chatear? Comenta abajo o pasa por nuestros foros (¡en realidad son lo mismo!) donde un montón de la gente más amable que se encontrará con estará encantado de ayudarle!,
Cuando Kirupa no está ocupado escribiendo sobre sí mismo en 3a persona, está practicando el distanciamiento social even incluso en sus perfiles de Twitter, Facebook y LinkedIn.
Hit Suscríbete para recibir buenos consejos, trucos, selfies, y de manera más personal entregado a su bandeja de entrada.