Si quieres aprender a generar números aleatorios & cadenas en Ruby, estás en el lugar correcto.
¡Porque de eso se trata exactamente este artículo!
Con un número aleatorio, puede elegir un elemento aleatorio de una matriz, elegir un ganador de una lista, generar tiradas de dados, etc.
En Ruby, hay muchas formas de generar números aleatorios con varias propiedades.
Por ejemplo
El método rand se puede usar de 3 maneras:
- Sin argumentos,
rand
le da un número de coma flotante entre 0 & 1 (como 0.4836732493) - Con un argumento entero (
rand(10)
) obtiene un nuevo entero entre 0 & ese número - Con un argumento de rango (
rand(1..20)
) obtiene un entero entre inicio del rango & el final del rango
Otras formas de generar aleatoriedad en Ruby incluyen:
- El método Array # shuffle
- El método Array # sample
- La clase SecureRandom
¡Repasemos algunos ejemplos!
Generar números aleatorios
Puede generar números aleatorios de Ruby utilizando el método rand:
Rand produce números de coma flotante (0.4836732493
) si se llama sin ningún argumento.
Puede pasar un argumento a rand
para generar un número que comience desde cero hasta (pero sin incluir) ese número.
rand 100> 41
La generación de números aleatorios de Ruby es realmente fácil, pero ¿qué pasa si necesita que el número esté en un rango específico en lugar de comenzar desde cero?
No es un problema!
Puede usar un rango para obtener exactamente lo que necesita.
Ejemplo:
rand 200..500> 352
Números aleatorios de Ruby seguros
Los números producidos por rand pueden ser suficientes para una aplicación simple
but pero si desea usarlos con fines de seguridad, como generar un token de restablecimiento de contraseña, debe usar SecureRandom, que es parte de la biblioteca estándar de Ruby.
SecureRandom siembra su generador desde /dev / urandom en sistemas Unix & en Windows utiliza la API CryptAcquireContext / CryptGenRandom.
Este es un ejemplo:
require 'securerandom'SecureRandom.random_number> 0.232
Como puede ver, esto funciona muy parecido a rand
, también puede pasar un número máximo.
Ejemplo:
SecureRandom.random_number(100)> 72
SecureRandom tiene otros formatos de salida disponibles.
El uso de hex
puede generar una cadena hexadecimal de ancho fijo.
SecureRandom.hex> "87694e9e5231abca6de39c58cdfbe307"
Ruby 2.5 introdujo un nuevo método, que produce cadenas alfanuméricas aleatorias:
SecureRandom.alphanumeric> "PSNVXOeDpnFikJPC"
Cómo Seleccionar Elementos aleatorios De Matrices
Ahora:
Es posible que desee obtener una selección aleatoria de una lista.
Puedes probar esto:
.shuffle.first> 30
Pero Ruby tiene el método de muestra que es más adecuado (y más rápido) para esta tarea:
.sample> 5
Puede usar sample para rangos, este código genera una letra aleatoria:
('a'..'z').to_a.sample> b
Puede pasar un argumento entero a sample para obtener N elementos únicos de la matriz:
.sample(2)>
También es posible pasar un generador aleatorio personalizado como argumento:
.sample(random: SecureRandom)
Cadenas aleatorias Ruby
La aplicación de aleatoriedad definitiva es generar una cadena aleatoria con un conjunto de caracteres personalizado. Aquí está el código:
def generate_code(number) charset = Array('A'..'Z') + Array('a'..'z') Array.new(number) { charset.sample }.joinendputs generate_code(20)
Hay algunas cosas pasando aquí.
En primer lugar, preparamos nuestro conjunto de caracteres utilizando rangos y convirtiéndolos en matrices. Luego aprovechamos llamar a Array.new
con un bloque, lo que nos permite inicializar un array de tamaño n con los valores producidos por el bloque.
Este código producirá cadenas de la siguiente forma: TufwGfXZskHlPcYrLNKg
.
Puede ajustar el conjunto de caracteres para que se ajuste a sus necesidades.
Sembrando el Generador de números aleatorios
Si desea controlar qué números se generan al usar un método como rand
, puede configurar la semilla.
¿Qué es la semilla?
La semilla es un número que comienza una secuencia de números aleatorios.
Todos los números generados se derivan de esta semilla.
Es por eso que la calidad de la semilla suele ser la clave para producir una buena secuencia de números aleatorios.
Ruby ya se encarga de eso (use SecureRandom
si necesita seguridad adicional), pero en algunos escenarios (principalmente probando & depuración) puede que desee configurar esta semilla usted mismo.
Puede hacer esto con el método srand
.
Kernel.srand(1)
Con esta semilla sabrás exactamente qué números te dará el generador.
Para el número 1 como semilla:
Array.new(5) { rand(1..10) }#
Si vuelve a establecer la semilla en 1, la secuencia comenzará en 6, luego 9, 10, etc.
Conclusión
¡Eso es todo! Ahora está listo para comenzar a usar aleatoriedad en sus programas Ruby 🙂
¿Encontró útil esta publicación?
Compártelo con tus amigos & ¡suscríbete a mi boletín para que no te pierdas nada nuevo!