Genere un número aleatorio entre dos números en JavaScript
Frecuentes
Visto 1,727 equipos
2061
¿Hay alguna forma de generar un número aleatorio en un rango específico (por ejemplo, de 1 a 6: 1, 2, 3, 4, 5 o 6) en JavaScript?
29 Respuestas
2345
Importante:
El siguiente código solo funciona si el valor mínimo es "1". No funciona para valores mínimos distintos de "1".Si quisiera obtener un número entero aleatorio entre 1 (y solo 1) y 6, calcularías:
const rndInt = Math.floor(Math.random() * 6) + 1
console.log(rndInt)
Dónde:
- 1 es el número de inicio
- 6 es el número de resultados posibles (1 + inicio (6) - fin (1))
contestado el 18 de mayo de 21 a las 22:05
Si bien esto funcionaría, @Mike, sería mejor señalar la versión más genérica, ya que Francisc la tiene a continuación :-). - RaymondMachira
-1. Después de buscar en Google encontré esta pregunta, el título es "" Generar valor aleatorio entre dos números en Javascript "." No funcionará si el valor mínimo es 0 - ydhem
No funciona si desea un número entre dos números más grandes, por ejemplo. Math.floor (Math.random () * 900) + 700 - Robar
Eso solo funciona si el mínimo es 1. Si el mínimo es 2 y todavía usamos Math.floor(Math.random() * 6) + 2
significa que si Math.random()
resultados en 0.99 nuestro valor aleatorio sería 7
- antitóxico
Este código no es bueno porque no funciona con ningún número. El código de @Francisc es el correcto. - Lion King
2618
function randomIntFromInterval(min, max) { // min and max included
return Math.floor(Math.random() * (max - min + 1) + min)
}
const rndInt = randomIntFromInterval(1, 6)
console.log(rndInt)
Lo que hace "extra" es que permite intervalos aleatorios que no comienzan con 1. Por lo tanto, puede obtener un número aleatorio del 10 al 15, por ejemplo. Flexibilidad.
contestado el 18 de mayo de 21 a las 22:05
esto también es genial porque si alguien no incluye el to
arg, el from
arg se dobla como el máximo - Jason
Hola. Esto es de MDN: Returns a floating-point, pseudo-random number in the range [0, 1) that is, from 0 (inclusive) up to but not including 1 (exclusive), which you can then scale to your desired range.
(desarrollador.mozilla.org/en-US/docs/JavaScript/Reference/…) - Francis
Lea el comentario anterior. Random está dentro de [0,1), no [0,1]. - Francis
Funciona muy bien si el número más bajo es 0. - petirrojo zimmermann
Tenga en cuenta que esta solución es correcta solo si min y max son números enteros; de lo contrario, puede obtener un resultado en el intervalo [min, ceil (max)]. Es decir, puede obtener un resultado que está fuera de rango porque es superior al máximo. - collimarco
400
Math.random ()
Devuelve un número entero aleatorio entre min (incluido) y max (incluido):
function randomInteger(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
Or cualquier número aleatorio entre min (incluido) y max (no incluido):
function randomNumber(min, max) {
return Math.random() * (max - min) + min;
}
Ejemplos útiles (enteros):
// 0 -> 10
Math.floor(Math.random() * 11);
// 1 -> 10
Math.floor(Math.random() * 10) + 1;
// 5 -> 20
Math.floor(Math.random() * 16) + 5;
// -10 -> (-2)
Math.floor(Math.random() * 9) - 10;
** Y siempre es bueno que te recuerden (Mozilla):
Math.random () no proporciona números aleatorios criptográficamente seguros. No los utilice para nada relacionado con la seguridad. En su lugar, utilice Web Crypto API y, más precisamente, el método window.crypto.getRandomValues ().
Respondido el 20 de junio de 20 a las 10:06
Algo que me confundió ... Math.floor (..) asegura que el número es un entero donde Math.round (..) daría una distribución desigual. Árbitro: desarrollador.mozilla.org/en-US/docs/Web/JavaScript/Reference/… - alikuli
Confío en esta respuesta. ¿Alguien puede dar un enlace o una explicación clara de por qué funciona esto? Quizás un ejemplo de cómo Math.round daría un sesgo, y ¿por qué eso significa que tenemos que usar esta fórmula de apariencia bastante compleja? - Robin Andrews
@alikuli Para una variedad de [1,2]
, hay un 25% de probabilidad Math.random()
te daría un número de uno de estos [0,0.49]
, [0.5,0.99]
, [1,1.49]
, [1.5,1.99]
. Redondear esos intervalos daría como resultado 0, 1, 1, 2 que no es una distribución uniforme. Pisarlos da como resultado 0, 0, 1, 1. - malhumorado
@shuji Esto is, entre otros, la respuesta correcta. Solo quería aclarar por qué usar Math.round
Más de Math.floor
daría resultados diferentes. - malhumorado
La solución más precisa que he encontrado: function getRandomInt(min, max) { return Math.round((min - 0.5) + Math.random() * (max - min + 1)); }
- Sadik
96
Respondido 03 Oct 19, 04:10
¿Le importaría explicar (o dar referencias a) la ~~ sintaxis? ¡No lo había visto antes! Solución elegante pero difícil de entender. - DiegoDD
Doble Tilde ~~a
y Bitwise O (a | 0) son formas más rápidas de escribir Math.floor (a) - edi9999
a | 0
también es la forma más rápida y optimizada de convertir una cadena en un número entero. Solo funciona con cadenas que contienen números enteros ("444"
y "-444"
), es decir, sin flotadores / fracciones. Produce un 0
por todo lo que falla. Es una de las principales optimizaciones detrás de asm.js. - pilaf
@ edi9999 ¿más rápido de escribir, pero también más rápido de ejecutar? - kbtz
Nota: si está trabajando con números realmente grandes, la tilde doble no funcionará. Intentar ~~(Math.random() * (50000000000000 - 0 + 1)) + 0
y Math.floor(Math.random() * (50000000000000 - 0 + 1)) + 0
- BrunoLM
65
TL; DR
function generateRandomInteger(min, max) {
return Math.floor(min + Math.random()*(max + 1 - min))
}
Para obtener el número aleatorio
generateRandomInteger(-20, 20);
EXPLICACIÓN A CONTINUACIÓN
Necesitamos obtener un número entero aleatorio, digamos X entre min y max.
¿Derecha?
es decir, min <= X <= max
Si restamos min de la ecuación, esto es equivalente a
0 <= (X - min) <= (max - min)
Ahora, multipliquemos esto con un número aleatorio. r cual es
0 <= (X - min) * r <= (max - min) * r
Ahora, agreguemos min a la ecuación
min <= min + (X - min) * r <= min + (max - min) * r
Ahora, elija una función que resulte en r de modo que satisfaga nuestro rango de ecuaciones como [min, max]. Esto solo es posible si 0 <= r <= 1
está bien. Ahora, el rango de r es decir, [0,1] es muy similar al resultado de la función Math.random (). ¿No es así?
La función Math.random () devuelve un número pseudoaleatorio de punto flotante en el rango [0, 1); es decir, desde 0 (inclusive) hasta pero sin incluir 1 (exclusivo)
Por ejemplo,
Caso r = 0
min
+ 0 * (max
-min
) = min
Caso r = 1
min
+ 1 * (max
-min
) = max
Caso aleatorio usando Math.random 0 <= r <1
min
+ r * (max
-min
) = X, Donde X tiene rango de min <= X < max
El resultado anterior X es un numérico aleatorio. Sin embargo, debido a Math.random (), nuestro límite izquierdo es inclusivo y el límite derecho es exclusivo. Para incluir nuestro límite derecho, aumentamos el límite derecho en 1 y piso el resultado.
function generateRandomInteger(min, max) {
return Math.floor(min + Math.random()*(max + 1 - min))
}
Para obtener el número aleatorio
generateRandomInteger(-20, 20)
;
Respondido 01 Oct 18, 14:10
27
var x = 6; // can be any number
var rand = Math.floor(Math.random()*x) + 1;
Respondido el 04 de diciembre de 12 a las 12:12
En efecto. Olvidé que el rand era 0 inclusive. Arreglado. - ryebr3ad
Eso es parte del pseudocódigo ... alguien podría pensar que es real y tratar de usarlo así. - niño de gravedad
@gravityboy ¿De qué estás hablando? Si alguien no puede sustituir un número por [elegir un número ...], es posible que no sea adecuado como programador. - ryebr3ad
@ ryebr3ad -1! se dice en javascript no en pseudocódigo y tampoco todos los lectores son programadores consumados. ¡Muchos son principiantes! - Steve
@ ryebr3ad: Tuve un compañero de trabajo que estaba enseñando a los pasantes sobre un entorno de base de datos que necesitarían apoyo. Les dijo que seleccionaran todo de una tabla y empezaron a escribir "seleccionar todo de ..." directamente en el editor de consultas SQL. Tuvo la misma reacción que tú. - Ellesedil
25
jsfiddle: https://jsfiddle.net/cyGwf/477/
Entero aleatorio: para obtener un número entero aleatorio entre min
y max
, usa el siguiente código
function getRandomInteger(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min;
}
Número de punto flotante aleatorio: para obtener un número de coma flotante aleatorio entre min
y max
, usa el siguiente código
function getRandomFloat(min, max) {
return Math.random() * (max - min) + min;
}
Referencia: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random
Respondido el 25 de enero de 17 a las 04:01
17
Las matemáticas no son mi punto fuerte, pero he estado trabajando en un proyecto en el que necesitaba generar muchos números aleatorios entre positivos y negativos.
function randomBetween(min, max) {
if (min < 0) {
return min + Math.random() * (Math.abs(min)+max);
}else {
return min + Math.random() * max;
}
}
P.ej
randomBetween(-10,15)//or..
randomBetween(10,20)//or...
randomBetween(-200,-100)
Por supuesto, también puede agregar algo de validación para asegurarse de no hacer esto con nada más que números. También asegúrese de que el mínimo sea siempre menor o igual que el máximo.
respondido 20 mar '13, 21:03
Esto es simplemente incorrecto. min + Math.random() * max
le dará números entre min y min + max, que no es lo que desea. La primera rama del if
es correcto, pero podría simplificarse para decir return min + Math.random() * (max - min)
, que es la solución correcta independientemente de si min es positivo o negativo (consulte las otras respuestas). Además, tenga en cuenta que aún debe nivelar el resultado si no desea fracciones. - Avish
11
Escribí una función más flexible que puede darte un número aleatorio pero no solo un entero.
function rand(min,max,interval)
{
if (typeof(interval)==='undefined') interval = 1;
var r = Math.floor(Math.random()*(max-min+interval)/interval);
return r*interval+min;
}
var a = rand(0,10); //can be 0, 1, 2 (...) 9, 10
var b = rand(4,6,0.1); //can be 4.0, 4.1, 4.2 (...) 5.9, 6.0
Versión fija.
Respondido el 14 de Septiembre de 15 a las 11:09
Esta no es una buena solución ya que no funcionará con cero como valor mínimo. Vea la respuesta de @Lior. - Sebastien
Por supuesto, funciona con cero como valor mínimo. ¿Has probado? No hay ninguna razón por la que no funcione. No funcionará con 0 como intervalo, lo cual no es extraño (¿intervalo = 0? ...). - ElChupacabra
Ejecuté varias veces esta función con cero como valor mínimo y nunca obtuve cero en la salida. O no tengo la suerte ... - Sebastien
Tienes razón. "+ intervalo" estaba en el lugar incorrecto. Pruébelo ahora por favor. Lo extraño que a veces console.log me da 0.300000004 en lugar de 0.3 como 3 * 0.1 no sería exactamente 0.3. - ElChupacabra
11
Ejemplo
Devuelve un número aleatorio entre 1 y 10:
Math.floor((Math.random() * 10) + 1);
El resultado podría ser:
3
Pruébelo usted mismo: aquí
--
o usando lodash / undescore:
_.random(min, max)
Documentos: - lodash - no puntuado
Respondido el 13 de diciembre de 16 a las 20:12
entonces necesitas 9 o 10, ¿verdad? En caso afirmativo: const randomNumber = Math.floor ((Math.random () * 10) + 1) const nineOrTen = randomNumber% 2 === 0? 9:10 - Sebastián Lara
11
Versión de las funciones ES6 / Arrow basada en el código de Francis (es decir, la respuesta principal):
const randomIntFromInterval = (min, max) => Math.floor(Math.random() * (max - min + 1) + min);
Respondido el 04 de enero de 21 a las 00:01
¡Lindo! Es muy útil proporcionar la min
y max
valores. Estaba buscando esta respuesta. - Víctor
9
Estaba buscando un generador de números aleatorios escrito en TypeScript y lo escribí después de leer todas las respuestas, espero que funcione para los codificadores de TypeScript.
Rand(min: number, max: number): number {
return (Math.random() * (max - min + 1) | 0) + min;
}
Respondido el 07 de Septiembre de 14 a las 15:09
7
A pesar de muchas respuestas y casi el mismo resultado. Me gustaría agregar mi respuesta y explicar su funcionamiento. Porque es importante entender su funcionamiento en lugar de copiar y pegar el código de una línea. Generar números aleatorios no es más que simples matemáticas.
CÓDIGO:
function getR(lower, upper) {
var percent = (Math.random() * 100);
// this will return number between 0-99 because Math.random returns decimal number from 0-0.9929292 something like that
//now you have a percentage, use it find out the number between your INTERVAL :upper-lower
var num = ((percent * (upper - lower) / 100));
//num will now have a number that falls in your INTERVAL simple maths
num += lower;
//add lower to make it fall in your INTERVAL
//but num is still in decimal
//use Math.floor>downward to its nearest integer you won't get upper value ever
//use Math.ceil>upward to its nearest integer upper value is possible
//Math.round>to its nearest integer 2.4>2 2.5>3 both lower and upper value possible
console.log(Math.floor(num), Math.ceil(num), Math.round(num));
}
Respondido el 15 de enero de 17 a las 05:01
7
Math.random()
es rápido y adecuado para muchos propósitos, pero no es apropiado si necesita valores criptográficamente seguros (no es seguro), o si necesita números enteros de una distribución insesgada completamente uniforme (el enfoque de multiplicación utilizado en otras respuestas produce ciertos valores un poco más a menudo que otros).
En tales casos, podemos usar crypto.getRandomValues()
para generar enteros seguros y rechazar cualquier valor generado que no podamos mapear uniformemente en el rango objetivo. Esto será más lento, pero no debería ser significativo a menos que esté generando una gran cantidad de valores.
Para aclarar la preocupación por la distribución sesgada, considere el caso en el que queremos generar un valor entre 1 y 5, pero tenemos un generador de números aleatorios que produce valores entre 1 y 16 (un valor de 4 bits). Queremos tener la misma cantidad de valores generados mapeando a cada valor de salida, pero 16 no se divide uniformemente entre 5: deja un resto de 1. Por lo tanto, debemos rechazar 1 de los posibles valores generados y solo continuar cuando obtenemos uno de los 15 valores menores que se pueden mapear uniformemente en nuestro rango objetivo. Nuestro comportamiento podría verse como este pseudocódigo:
Generate a 4-bit integer in the range 1-16.
If we generated 1, 6, or 11 then output 1.
If we generated 2, 7, or 12 then output 2.
If we generated 3, 8, or 13 then output 3.
If we generated 4, 9, or 14 then output 4.
If we generated 5, 10, or 15 then output 5.
If we generated 16 then reject it and try again.
El siguiente código usa una lógica similar, pero genera un entero de 32 bits en su lugar, porque ese es el tamaño de entero común más grande que se puede representar con el estándar de JavaScript number
tipo. (Esto podría modificarse para usar BigInt
s si necesita un rango mayor.) Independientemente del rango elegido, la fracción de valores generados que se rechazan siempre será menor que 0.5, por lo que el número esperado de rechazos siempre será menor que 1.0 y usualmente cercano a 0.0; no tiene que preocuparse de que se repita para siempre.
const randomInteger = (min, max) => {
const range = max - min;
const maxGeneratedValue = 0xFFFFFFFF;
const possibleResultValues = range + 1;
const possibleGeneratedValues = maxGeneratedValue + 1;
const remainder = possibleGeneratedValues % possibleResultValues;
const maxUnbiased = maxGeneratedValue - remainder;
if (!Number.isInteger(min) || !Number.isInteger(max) ||
max > Number.MAX_SAFE_INTEGER || min < Number.MIN_SAFE_INTEGER) {
throw new Error('Arguments must be safe integers.');
} else if (range > maxGeneratedValue) {
throw new Error(`Range of ${range} (from ${min} to ${max}) > ${maxGeneratedValue}.`);
} else if (max < min) {
throw new Error(`max (${max}) must be >= min (${min}).`);
} else if (min === max) {
return min;
}
let generated;
do {
generated = crypto.getRandomValues(new Uint32Array(1))[0];
} while (generated > maxUnbiased);
return min + (generated % possibleResultValues);
};
console.log(randomInteger(-8, 8)); // -2
console.log(randomInteger(0, 0)); // 0
console.log(randomInteger(0, 0xFFFFFFFF)); // 944450079
console.log(randomInteger(-1, 0xFFFFFFFF));
// Error: Range of 4294967296 covering -1 to 4294967295 is > 4294967295.
console.log(new Array(12).fill().map(n => randomInteger(8, 12)));
// [11, 8, 8, 11, 10, 8, 8, 12, 12, 12, 9, 9]
Respondido 07 Abr '19, 03:04
@ 2xSamurai Allí, actualicé la respuesta para explicar por qué podrías necesitar esto y cómo funciona. ¿Eso está mejor? :PAG - Jeremy
No es una exageración si desea números aleatorios criptográficamente seguros y distribuidos uniformemente. Generar números aleatorios que cumplan con esos requisitos es difícil. Gran respuesta, @JeremyBanks. - Tomas Konrad
6
para devolver 1-6 como un dado básicamente,
return Math.round(Math.random() * 5 + 1);
contestado el 31 de mayo de 20 a las 07:05
6
La solución mejor calificada no es matemáticamente correcta como los comentarios debajo de ella -> Math.floor(Math.random() * 6) + 1
.
Tarea: generar un número aleatorio entre 1 y 6.
Math.random()
devuelve un número de punto flotante entre 0 y 1 (como 0.344717274374 o 0.99341293123 por ejemplo), que usaremos como un porcentaje, entonces Math.floor(Math.random() * 6) + 1
devuelve un porcentaje de 6 (max: 5, min: 0) y agrega 1. El autor tuvo suerte de que el límite inferior fuera 1., porque el piso porcentual devolverá "como máximo" 5, que es menos de 6 por 1, y ese 1 se agregará por el límite inferior 1.
El problema ocurre cuando el límite inferior es mayor que 1. Por ejemplo, Tarea: generar aleatorio entre 2 y 6.
(siguiendo la lógica del autor)
Math.floor(Math.random() * 6) + 2
, obviamente se ve que si obtenemos 5 aquí -> Math.random() * 6
y luego agregue 2, el resultado será 7 que va más allá del límite deseado de 6.
Otro ejemplo, Tarea: generar aleatorio entre 10 y 12.
(siguiendo la lógica del autor)
Math.floor(Math.random() * 12) + 10
, (perdón por repetir) es obvio que obtenemos 0% -99% por ciento del número "12", que irá mucho más allá del límite deseado de 12.
Entonces, la lógica correcta es tomar la diferencia entre límite inferior y límite superior add 1, y solo entonces el piso (para restar 1, porque Math.random()
devuelve 0 - 0.99, por lo que no hay forma de obtener el límite superior completo, por eso agregamos 1 al límite superior para obtener un máximo del 99% de (límite superior + 1) y luego lo reducimos para eliminar el exceso). Una vez que obtenemos el porcentaje de suelo de (diferencia + 1), podemos agregar un límite inferior para obtener el número aleatorio deseado entre 2 números.
La fórmula lógica para eso será: Math.floor(Math.random() * ((up_boundary - low_boundary) + 1)) + 10
.
Ps: Incluso los comentarios debajo de la respuesta mejor calificada eran incorrectos, ya que las personas se olvidaron de agregar 1 En el correo electrónico “Su Cuenta de Usuario en su Nuevo Sistema XNUMXCX”. Affordable, lo que significa que nunca alcanzarán el límite superior (sí, podría ser un caso si no quieren obtenerlo en absoluto, pero el requisito era incluir el límite superior).
Respondido 07 Feb 21, 00:02
Math.floor (Math.random () * ((up_boundary - low_boundary) + 1)) + low_boundary - M22
4
Adición float
con versión de precisión fija basada en el int
versión en la respuesta de @ Francisc:
function randomFloatFromInterval (min, max, fractionDigits) {
const fractionMultiplier = Math.pow(10, fractionDigits)
return Math.round(
(Math.random() * (max - min) + min) * fractionMultiplier,
) / fractionMultiplier
}
Sun:
randomFloatFromInterval(1,3,4) // => 2.2679, 1.509, 1.8863, 2.9741, ...
y para int respuesta
randomFloatFromInterval(1,3,0) // => 1, 2, 3
Respondido 13 Feb 19, 13:02
3
Esto debería funcionar:
const getRandomNum = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min
Respondido 16 Jul 19, 13:07
3
Cripto-fuerte número entero aleatorio en el rango [a, b] (supuesto: a <b)
let rand= (a,b)=> a+(b-a+1)*crypto.getRandomValues(new Uint32Array(1))[0]/2**32|0
console.log( rand(1,6) );
Respondido 23 Feb 20, 11:02
3
Usando una función aleatoria, que se puede reutilizar.
function randomNum(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
randomNum(1, 6);
Respondido 28 Feb 21, 21:02
3
Esto admite números enteros negativos:
Math.floor(Math.random() * (max - min + 1)) + min;
contestado el 29 de mayo de 21 a las 00:05
2
Esto es como nueve años tarde, pero randojs.com hace que esto sea un simple de una sola línea:
rando(1, 6)
Solo necesita agregar esto al encabezado de su documento html, y puede hacer prácticamente lo que quiera con aleatoriedad fácilmente. Valores aleatorios de matrices, elementos jquery aleatorios, propiedades aleatorias de objetos e incluso evitar repeticiones si es necesario.
<script src="https://randojs.com/1.0.0.js"></script>
Respondido el 02 de diciembre de 19 a las 03:12
2
Intente usar:
function random(min, max) {
return Math.round((Math.random() *( Math.abs(max - min))) + min);
}
console.log(random(1, 6));
Respondido 10 Feb 20, 09:02
2
Esta función puede generar un número entero aleatorio entre (e incluyendo) números mínimos y máximos:
function randomNumber(min, max) {
if (min > max) {
let temp = max;
max = min;
min = temp;
}
if (min <= 0) {
return Math.floor(Math.random() * (max + Math.abs(min) + 1)) + min;
} else {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
}
Ejemplo:
randomNumber(-2, 3); // can be -2, -1, 0, 1, 2 and 3
randomNumber(-5, -2); // can be -5, -4, -3 and -2
randomNumber(0, 4); // can be 0, 1, 2, 3 and 4
randomNumber(4, 0); // can be 0, 1, 2, 3 and 4
Respondido el 03 de enero de 21 a las 01:01
esto nunca sacará 6 si max = 6 y min = 0 - mesqueeb
@mesqueeb Edité mi respuesta, como Math.random()
nunca será 1. - Rayron Víctor
Creo que su respuesta es buena en "teoría", pero sería mucho mejor si pudiera indicar claramente en su respuesta si max = 6 "incluiría" la posibilidad de 6 o no, y si min = 1 "incluiría" la posibilidad de 1? Esto se puede leer de manera muy ambigua y puede confundir a la gente. ¿Es "máximo 6 - incluyendo 6" o "máximo 6 - sin incluir 6" ... Lo mismo para "mínimo". - mesqueeb
Actualicé mi respuesta para eliminar la ambigüedad y agregar la posibilidad de números negativos. - Rayron Víctor
temp
no se utiliza. - Puré de guisantes
1
Descubrí una nueva forma excelente de hacer esto usando los parámetros predeterminados de ES6. Es muy ingenioso ya que permite un argumento o dos argumentos. Aquí lo tienes:
function random(n, b = 0) {
return Math.random() * (b-n) + n;
}
Respondido 17 Jul 19, 18:07
1
Esto funciona para mí y produce valores como el de Python. random.randint función de biblioteca estándar:
function randint(min, max) {
return Math.round((Math.random() * Math.abs(max - min)) + min);
}
console.log("Random integer: " + randint(-5, 5));
Respondido el 01 de enero de 20 a las 16:01
0
para un gran número.
var min_num = 900;
var max_num = 1000;
while(true){
let num_random = Math.random()* max_num;
console.log('input : '+num_random);
if(num_random >= min_num){
console.log(Math.floor(num_random));
break;
} else {
console.log(':::'+Math.floor(num_random));
}
}
Respondido el 03 de diciembre de 20 a las 03:12
0
Si el número inicial es 1, como en su ejemplo (1-6), puede usar el método Math.ceil () en lugar de Math.floor ().
Math.ceil(Math.random() * 6)
en lugar de
Math.floor(Math.random() * 6) + 1
No olvidemos otros métodos matemáticos útiles.
contestado el 16 de mayo de 21 a las 19:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas javascript random or haz tu propia pregunta.
Math.floor (Math.random () * 7) - Amjad Masad
Claro ... Math.floor (Math.random () * 6 + 1) - Amjad Masad
Nabil Kadimi escribió un artículo sobre cómo generar números aleatorios negativos también. - madc
aquí hay una esencia útil: gist.github.com/kerimdzhanov/7529623 - Dan K.K.
por qué una solución como esta
Math.floor((Math.random()*10)+1);
no puede funcionar para usted como se especifica aquí en w3schools.com/jsref/jsref_random.asp ..? - shashwat