Genere números aleatorios y cadenas en JavaScript [Ejemplos]

Esta guía le mostrará cómo generar rápida y fácilmente cadenas y números aleatorios en el lenguaje de programación JavaScript.

La generación de valores aleatorios es una tarea común e importante cuando se programa casi cualquier tipo de aplicación de complejidad moderada.

Las cadenas y los números aleatorios se utilizan para generar identificadores únicos (por ejemplo, para las URL cortas en los servicios de reducción de URL), para identificar registros únicos en una base de datos y (lo que es más importante) se utilizan con frecuencia para determinar el comportamiento de los elementos de juego en los videojuegos ( por ejemplo, simular un lanzamiento de moneda o generar un terreno aleatorio).

Generando Números Aleatorios en JavaScript usando Math.random()

JavaScript Math.random() La función devuelve un número aleatorio de coma flotante entre 0 y 1. Es muy fácil de usar:

var myRandomNumber = Math.random(); // A value between 0 and 1

Pero, ¿y si quieres un número entero? Combínalo con Math.floor() función, que redondea un número al entero más cercano y multiplica el número aleatorio por el número máximo que le gustaría recibir:

var myRandomInteger = Math.floor(Math.random() * 15);

El ejemplo anterior asignará un número entero aleatorio del 0 al 15 a la variable myRandomInteger.

Este concepto se puede ampliar para obtener un valor entero aleatorio entre dos valores cualesquiera:

function getRandomInteger(min, max) {
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(Math.random() * (max - min + 1) + min); //The maximum is inclusive and the minimum is inclusive
}

Que se puede usar así:

var myRandomInteger = getRandomInteger(2, 18);

Lo que devolvería un número entero aleatorio entre 2 y 18, inclusive.

Quiere obtener un número de punto flotante entre minmáx ? Eliminar el Math.floor() final para evitar que el resultado se redondee al entero más cercano.

Para obtener más tipos de números aleatorios, puede generarlos con Math.Random(), consulte los documentos del desarrollador de Mozilla.

Generación de cadenas aleatorias en JavaScript

No hay una forma de JavaScript integrada para generar una cadena aleatoria, así que aquí hay una buena solución de bricolaje:

function randomString(minChars, maxChars) {
    Math.random().toString(36).substr(minChars, maxChars);
}

Entonces, ¿qué está pasando aquí?

  • Math.random() se llama
  • El resultado se convierte en una cadena utilizando toString() con radix de 36
    • Manteniéndolo simple, ese radix convierte el valor aleatorio representado por dígitos numéricos en uno con una base alta donde el número aleatorio está representado por letras alfabéticas
  • El resultado de todo eso se recorta usando substr() para cortar la cuerda a la longitud necesaria
  • Existe una posibilidad astronómicamente pequeña de que se devuelva una cadena vacía si Math.random() devuelve 0
    • Como somos un sitio de enseñanza, he usado este ejemplo porque es fácil explicar por qué está haciendo lo que está haciendo
    • Consulte esta respuesta en StackOverflow para ver una discusión y una solución a este problema

Esta función se puede utilizar así:

var myRandomString = randomString(2,6);

El ejemplo anterior generará una cadena aleatoria de entre 2 y 6 caracteres de longitud.

¡Advertencia de seguridad!

Todos los valores aleatorios generados con el código anterior se consideran pseudo-aleatorios, suficientemente aleatorio para uso general, pero no lo suficientemente aleatorio para una seguridad a prueba de balas al codificar contraseñas o generar cifrados seguros.

Si desea proteger su aplicación utilizando datos aleatorios, DEBE utilizar una biblioteca criptográfica adecuada.

Aún mejor, simplemente no lo hagas. En su lugar, utilice una biblioteca de autenticación o criptografía preconstruida. Implementar sus propios servicios de autenticación y encriptación utilizando tutoriales que ha encontrado en línea es una buena manera de comprometer sus datos. Simplemente integre una solución hecha por profesionales:ahorrará tiempo y se preocupará menos.