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
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
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.
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:
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:
Publicación traducida automáticamente
Artículo escrito por mharshita31 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA