Generar Número Aleatorio en Bash
-
Uso de la variable
$RANDOM
para generar números aleatorios -
Uso del comando
shuf
para generar números aleatorios -
Usando
/dev/urandom
para generar números aleatorios - Usando Awk para generar números aleatorios
En Bash, se puede usar un número entero o flotante para producir un número aleatorio. Se puede usar un script bash para crear un número aleatorio dentro de un rango o tamaño dado. Este artículo demuestra varios métodos para generar números aleatorios en Bash.
Nota: Puede obtener una salida de números aleatorios diferentes al ejecutar los siguientes comandos.
Uso de la variable $RANDOM
para generar números aleatorios
La variable $RANDOM
se puede utilizar para producir un número aleatorio o un rango de valores aleatorios entre 0
y 32767
. Sin embargo, puede limitar el rango de números utilizado para generar números aleatorios dividiendo el valor $RANDOM
por un valor específico.
Para producir un número aleatorio entre 0 y 32767, use el siguiente comando:
$ echo $RANDOM
Producción :
28091
Puede producir un número aleatorio de un rango específico dividiendo la variable $RANDOM
por el valor restante. Contiene primeros paréntesis dobles (())
con un símbolo $
.
Para producir un número aleatorio entre 1 y 100, use el siguiente comando:
$ echo $(( $RANDOM % 100 + 1 ))
Producción :
19
Dado que el signo de porcentaje hace que falle el módulo de la operación matemática, nunca se alcanza el número 100 (resto después de la división). Si el generador aleatorio devolviera el valor 100, la operación de módulo proporcionaría el valor 0.
Uso del comando shuf
para generar números aleatorios
Puede usar el comando shuf
para producir numerosos números en un script de shell.
El siguiente comando creará un solo número entero entre 0 y 100:
$ shuf -i 0-100 -n1
Producción :
76
En el comando anterior, -i
denota el rango de entrada y -n
denota el recuento. La tecla -n
va seguida de cualquier número positivo, indicando el número para generar números aleatorios. Ejecute el siguiente comando para imprimir cinco números aleatorios entre 0 y 100.
$ shuf -i 0-100 -n5
Producción :
68
78
24
76
41
Usando /dev/urandom
para generar números aleatorios
El archivo de dispositivo /dev/urandom
le permite producir números pseudoaleatorios mucho más aleatorios que la variable $RANDOM
. Sin embargo, poner estos números en variables en un script implica más trabajo, como filtrar a través de od
, como se muestra en el ejemplo.
od /dev/urandom -A n -t d -N 1
La opción -t d
indica que se debe usar el decimal con signo como formato de salida, y -N 1
le dice al programa que obtenga un byte de /dev/urandom
.
Producción :
124
Usando Awk para generar números aleatorios
La función rand()
de awk
devuelve un número de punto flotante aleatorio en el rango de 0 - 1. Los comandos que siguen a BEGIN
se ejecutarán antes del siguiente paso.
awk 'BEGIN{x=rand(); print x}'
Producción :
0.444937