Ya hemos visto que $RANDOM%$limitesuperior no funciona.
Hemos visto que $RANDOM%1 para hacer tiradas "a cara o cruz" no funciona.
Y del mismo modo que deberemos sospechar (y no apostar) si vemos que un trilero siempre saca el mismo resultado lanzando una moneda, cuando lanza un dado puede que haga también trampa. Los dados se pueden cargar y hacer que un lado pese más, por lo que hay más posibilidades de que ese lado sea el que se apoye en la mesa y, por lo tanto, sea el lado apostado el que quede arriba. Pasa lo mismo con $RANDOM:
#!/bin/bash
let nocoincide=0
for i in $(seq 1 1000)
do
for x in $(seq 1 1000)
do
let numero=$((RANDOM%$x))
if [ $numero -lt 10 ]
then
echo $numero >> coincidencias.txt
fi
done
done
for i in $(seq 0 9)
do
echo "Veces que se repite "$i
fgrep -o $i coincidencias.txt | wc -l
done
El resultado que me ha dado es (cada vez que lo probemos saldŕa algo distinto, ya que son números aleatorios):
Veces que se repite 0
7559
Veces que se repite 1
6668
Veces que se repite 2
5941
Veces que se repite 3
5730
Veces que se repite 4
5387
Veces que se repite 5
5219
Veces que se repite 6
5053
Veces que se repite 7
4810
Veces que se repite 8
4769
Veces que se repite 9
4638
Cuanto más pequeño es el número, más veces se repite. Curioso caso de "aleatoriedad". ¿No os resulta sospechoso? A mi, sí. Por lo que voy a compararlo con otros números. Y antes, voy a borrar coincidencias.txt para evitar viciar resultados:
rm coincidencias.txt
Y ahora, el script:
#!/bin/bash
let nocoincide=0
for i in $(seq 1 1000)
do
for x in $(seq 1 1000)
do
let numero=$((RANDOM%$x))
if [ $numero -lt 10 ]
then
echo $numero >> coincidencias.txt
elif [ $numero -eq 100 ]
then
echo $numero >> coincidencias.txt
elif [ $numero -eq 500 ]
then
echo $numero >> coincidencias.txt
elif [ $numero -eq 750 ]
then
echo $numero >> coincidencias.txt
elif [ $numero -eq 999 ]
then
echo $numero >> coincidencias.txt
fi
done
done
for i in $(seq 0 9)
do
echo "Veces que se repite "$i":"
fgrep -o $i coincidencias.txt | wc -l
done
echo "Datos de control"
for i in 100 500 750 999
do
echo "Veces que se repite "$i":"
fgrep -o $i coincidencias.txt | wc -l
done
Y el resultado:
Veces que se repite 0:
13717
Veces que se repite 1:
8694
Veces que se repite 2:
5986
Veces que se repite 3:
5651
Veces que se repite 4:
5389
Veces que se repite 5:
6259
Veces que se repite 6:
5029
Veces que se repite 7:
5339
Veces que se repite 8:
4796
Veces que se repite 9:
4701
Datos de control
Veces que se repite 100:
2296
Veces que se repite 500:
687
Veces que se repite 750:
277
Veces que se repite 999:
0
Ummmm... Como digo, algo que es aleatorio puede cambiar el resultado. Pero si siempre que ejecutamos el script nos da el mismo patrón, que es que cuanto más pequeño sea el número, más veces sale, es que esa aleatoriedad está tan viciada con los dados cargados de un trilero. Y es que $numero en $RANDOM%$numero no indica el límite superior sino el divisor de un dividendo aleatorio en una instrucción en la que le pedimos que nos indique el resto.
Ni más, ni menos.