Generar Número Aleatorio en Bash

Nilesh Katuwal 30 enero 2023
  1. Uso de la variable $RANDOM para generar números aleatorios
  2. Uso del comando shuf para generar números aleatorios
  3. Usando /dev/urandom para generar números aleatorios
  4. Usando Awk para generar números aleatorios
Generar Número Aleatorio en Bash

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