Variable de shell RANDOM en Linux con ejemplos

RANDOM es una variable de shell que se usa para generar enteros aleatorios en Linux. Es un comando bash interno que devuelve un número entero pseudoaleatorio de 16 bits en el rango de 0 a 32767. Devuelve un número entero diferente en cada invocación. Para mejorar el proceso de aleatorización, la variable aleatoria se puede sembrar con un valor inicial que puede ser el tiempo en época, el ID de proceso del shell actual, etc.

Sintaxis para usar el tiempo en época para inicializar el generador:

RANDOM=$(date +%s)

Sintaxis para usar el ID de proceso del shell actual para inicializar el generador:

RANDOM=$$ #PID of shell is stored in $$ variable

Trabajando con la variable RANDOM

Generando un entero aleatorio

Se puede generar un entero aleatorio leyendo directamente de la variable aleatoria usando el comando echo. Mostrará un número entero aleatorio en el rango de 0 a 32767.

echo $RANDOM

Generating random integer

Generando ‘n’ enteros aleatorios

Puede usar bucles para generar más de un número aleatorio usando la variable de shell RANDOM. El siguiente código generará 5 valores aleatorios en el rango de 0 a 32767.

RANDOM=$$
for i in `seq 5`
do
        echo $RANDOM
done

generating n random integers

Nota: Reemplace 5 con el número de valores aleatorios de su elección.

Generando un entero aleatorio cuando se da el límite superior

Considere que desea generar un número entero aleatorio dentro de Y (donde Y no está incluido). El formato para lograr esto es:

R=$(($RANDOM%Y))

Para incluir el límite superior Y, el divisor de la operación módulo será Y+1. El formato es:

R=$(($RANDOM%Y+1))

Ejemplo:

echo $(($RANDOM%10)) #This will display a random integer between 0 and 9.
echo $(($RANDOM%11)) #This will display a random integer between 0 and 10.

generating random integers when the upper limit is given

Cuando la entrada se toma del usuario en un script de shell desde la línea de comando para generar el número entero, se puede usar el siguiente código:

Y=$1
div=$((Y+1))
RANDOM=$$
R=$(($RANDOM%$div))
echo $R

Y almacena el límite superior y echo $R muestra el número entero aleatorio. La salida es:

shell script to generate random numbers when the upper limit is given

Generando enteros aleatorios cuando se da el límite superior e inferior

Considere que desea generar un número entero aleatorio entre X e Y, donde X es el límite inferior (X≠0) e Y es el límite superior. El formato para lograr esto es:

RANGE=$((Y-X+1))
R=$(($(($RANDOM%$RANGE))+X))

Ejemplo:

echo "lower limit:"
read X
echo "upper limit:"
read Y
RANGE=$((Y-X+1))
RANDOM=$$
R=$(($(($RANDOM%$RANGE))+X))
echo "The random integer is $R"

La salida es:

Generating random integer when both upper and lower limit is given

Publicación traducida automáticamente

Artículo escrito por mharshita31 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *