18 votos

Generar números aleatorios

Cómo generar un número aleatorio en bash?

33voto

Nelson Puntos 3878

Sí, $ALEATORIO. Es a menudo útil en combinación con la simple aritmética del shell. Por ejemplo, para generar un número aleatorio entre 1 y 10:

$ echo $[ 1 + $[ RANDOM % 10 ]]
5

El real generador está en variables.c, la función de la marca(). Las versiones anteriores eran un simple generador lineal. La versión 4.0 de bash utiliza un generador con una citación a un 1985 papel, lo que probablemente significa que es una fuente decente de números pseudo aleatorios. Yo no lo uso para una simulación (y ciertamente no para crypto), pero es probablemente adecuado para basic scripting tareas.

Si estás haciendo algo que requiere serio números aleatorios puede utilizar /dev/random y /dev/urandom si están disponibles. Es decir:

$ dd if=/dev/urandom count=4 bs=1 | od -t d

24voto

Andrew Hare Puntos 159332

Por favor, consulte $RANDOM:

$RANDOM es un interno de la función Bash (no constante) que devuelve un pseudo aleatorios enteros en el rango 0 - 32767. No debe ser usado para generar una clave de cifrado.

9voto

Barun Puntos 831

Intente esto en la consola:

$ od -A n -t d -N 1 /dev/urandom

Aquí, -t d especifica que el formato de salida debe ser firmado decimal; -N 1 dice leer un byte de /dev/urandom.

3voto

Janusz Puntos 52607

Si usted está usando un sistema linux puede obtener un número aleatorio de /dev/random o /dev/urandom. Tenga cuidado de /dev/random bloqueará si no hay suficientes números aleatorios disponibles. Si usted necesita la velocidad sobre la aleatoriedad uso de /dev/urandom.

Estos "archivos" estará llena de números aleatorios generados por el sistema operativo. Depende de la implementación de /dev/random en su sistema si usted consigue cierto o números pseudo-aleatorios. Verdaderos números aleatorios generados con la forma de la ayuda de ruido se reunieron de controladores de dispositivos como el ratón, disco duro, red.

Usted puede obtener los números aleatorios desde el archivo con dd

3voto

ghostdog74 Puntos 86060

también puede obtener el número aleatorio de awk

awk 'BEGIN {
   # seed
   srand()
   for (i=1;i<=1000;i++){
     print int(1 + rand() * 100)
   }
}'

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: