Si queremos un número aleatorio en Bash, tenemos la función de Bash RANDOM. Es una función del intérprete de comandos, por lo que no lo podemos ejecutar como comando, sino que si queremos desde la línea de comandos un número aleatorio, deberemos escribir:
echo $RANDOM
Esto nos dará un número aleatorio entre 0 y 32.768 (2 elevado a 15).
Pero, ¿qué pasa si queremos delimitar el rango en el que queremos el número aleatorio?
Podemos dividirlo por el límite superior y, al devolver el módulo, siempre será, como máximo, el número indicado menos uno. En muchos artículos y tutoriales que dicen que el número que indicamos después del símbolo de porcentaje es el límite superior, pero esto no es así.
Veamos un caso extremo:
#!/bin/bash
contador=0
for i in $(seq 1 100000)
do
let numero=$((RANDOM%1))
if [ $numero -eq 1 ]
then
let contador=$contador+1
fi
done
echo $contador
Le digo que haga un bucle cien mil veces y que calcule un número aleatorio entre el 0 y el 1. Que cuente cuantas veces sale 1 y muestre el número de veces que ha salido 1.
El resultado siempre es 0.
Así pues, cuando queráis un número aleatorio con un rango, sumadle uno al rango superior que le indiquéis a $RANDOM.
Buena explicacion pero dividir entre 1 no da decimales y no hay redondeio