Las cadenas aleatorias son características útiles en varios casos, como cifrado, semillas de datos y más. Aunque es imposible crear un valor genuinamente arbitrario utilizando máquinas deterministas, podemos obtener un conjunto de valores pseudorandom que aparecen aleatoriamente generados.
Esta guía le mostrará cómo generar una cadena aleatoria usando Ruby. Dado que una cadena es una variedad de caracteres alfanuméricos, comenzaremos con lo básico y generaremos números y caracteres aleatorios.
Generando un número aleatorio
Antes de centrarnos en generar cadenas aleatorias en Ruby, aprendamos a generar un número aleatorio en Ruby.
Utilizamos el método RAND para generar números aleatorios. Si llama al método RAND sin argumentos, genera un número flotante en el rango de 0.0 y 1.0
rand ()La función RAND también le permite pasar un entero como argumento. Si el método tiene un valor entero proporcionado, generará un valor entero aleatorio en el rango de 0 al valor especificado.
Rand (10)En el ejemplo anterior, cada vez que ejecute el método anterior, obtendrá un valor entre 0 y 10, exclusivo.
Supongamos que desea generar un número aleatorio dentro de un rango específico. En tal escenario, puede especificar el rango como:
Empiece ... parePor ejemplo, para generar un valor aleatorio entre 30 y 60:
Rand (30 ... 60)El ejemplo anterior es exclusivo del valor final. Esto significa que 60 no se incluirán como un valor aleatorio.
Si desea incluir un valor final, use la notación de doble punto como:
Rand (30 ... 60)Generando una cadena aleatoria
Aunque hay varias formas de generar una cadena aleatoria en Ruby, nos quedaremos con una simple que utiliza métodos y funcionalidad de rubí incorporados.
Paso 1 - Generar la matriz de caracteres
El primer método es generar una variedad de caracteres. Para hacer esto, utilizaremos el método de rango en Ruby.
Por ejemplo, el siguiente código genera una matriz de caracteres minúsculas.
('A' ... 'Z')A continuación, necesitamos convertir la salida del código anterior en una matriz. Podemos usar el método TO_A como:
('A' ... 'Z').a_aEl método anterior nos dará una variedad de personajes.
Solo puedes usar caracteres en minúsculas solo. Puedes generar caracteres mayúsculas como:
('A' ... 'Z').a_aPaso 2 - baraja los personajes generados
En el ejemplo anterior, generamos una matriz de caracteres en orden secuencial. Por lo tanto, los valores no están en orden aleatorio.
Para introducir aleatoriedad para cada vez que se llama al bloque, podemos usar el método Shuffle.
El método Shuffle devolverá una nueva matriz con los elementos en la matriz anterior barajada.
Tome el primer ejemplo de matriz y la baraja.
('A' ... 'Z').a_a.barajarEn este ejemplo, los personajes se barajan en un orden aleatorio cada vez que ejecutamos el código.
Paso 3 - Convertir a cadena
Hasta este punto, solo hemos creado una variedad de personajes. El siguiente paso es convertir los caracteres en la matriz a una sola cadena, que podemos lograr utilizando el método de unión.
Por ejemplo:
a_a.barajar.unirseEjecución del código anterior devolverá una cadena aleatoria de caracteres minúsculas.
Paso 4 - Más aleatoriedad
Podemos introducir más aleatoriedad a nuestra cadena generada introduciendo caracteres mayúsculas y valores numéricos.
Podemos hacer esto por:
[ *'A' ... 'Z', *0 ... 9, *'A' ... 'Z']El ejemplo anterior generará una matriz de valores minúsculas, mayúsculas y numéricos.
Para aleatorizarlos, use el método Shuffle y une para crear una cadena. A continuación se muestra una salida de ejemplo:
[ *'A' ... 'Z', *0 ... 9, *'A' ... 'Z'].barajar.unirseSupongamos que queremos obtener una cadena de una longitud específica. Por ejemplo, para generar una cadena de longitud 10. Podemos pasar el rango al método Shuffle como:
[ *'A' ... 'Z', *0 ... 9, *'A' ... 'Z'].barajar [0 ... 10].unirseMétodo 2 -securerandom módulo
Ruby también proporciona el paquete SecureRandom para generar cuerdas aleatorias. Admite hexadecimal, base64 y bytes.
Para usarlo, importarlo como:
requiere 'Secureandom'Genere un valor aleatorio de base64 como:
Seguridad.base64Para Hex, entra:
Seguridad.maleficioFinalmente, usando bytes:
Seguridad.random_bytesClausura
Esta guía cubre cómo generar valores aleatorios en Ruby utilizando métodos y módulos preconstruidos.