ksh ha incorporado en un generador de números aleatorios. Su rendimiento no es espectacular, pero probablemente es lo suficientemente buena para sus fines. Va a generar números aleatorios en el rango de 0 a 32767. Usted necesitará una clase distinta. Utilizar esta técnica:
Código:
#! /usr/bin/ksh
#
# RANDOM is a random number between 0 and 32767 (inclusive)
max_random=32768
#
# We want a random number between 0 and 14 (inclusive)
max_needed=15
i=0
while ((i<7)) ; do
((r=RANDOM*max_needed/max_random))
echo $r
((i=i+1))
done
exit 0
Advertencia: no utilice el módulo de la operación para convertir la gama. El código anterior utiliza la alta orden de los primeros bits de números al azar mientras que el módulo de operación de la baja utilización fin bits. Por lo que se generará un número aleatorio entre 0 y 14999. A continuación, deberá añadir una línea para obtener un número entre 1 y 15000. Luego sólo tiene que utilizar
sed o algo para recuperar esa línea. (O algo así. Yo se perdió en su matemáticas ... no entiendo cómo escoger 50 ciudades nos coge 1000.

)
Pero esto supone que está bien para recoger la línea lsame dos veces el archivo de vez en cuando. Muchas veces eso es exactamente lo que usted desea. Pero un par de veces, no son duplicados bien. Supongamos que había 52 líneas en el archivo que representan las cartas de una baraja de naipes. Si desea generar una mano de póquer al azar, debe eliminar duplicados. En este caso, en primer lugar, generar un número entre 1 y 52 y, como antes, se recupere la línea seleccionada. Pero entonces usted usaría
sed para borrar la línea que deja sólo 51 líneas en el archivo. Para su segunda carta, genera un número aleatorio entre 1 y 51. Y así sucesivamente.