Générer un nombre aléatoire dans Bash

Nilesh Katuwal 30 janvier 2023
  1. Utilisation de la variable $RANDOM pour générer des nombres aléatoires
  2. Utilisation de la commande shuf pour générer des nombres aléatoires
  3. Utiliser /dev/urandom pour générer des nombres aléatoires
  4. Utiliser Awk pour générer des nombres aléatoires
Générer un nombre aléatoire dans Bash

Dans Bash, un entier ou un flottant peut être utilisé pour produire un nombre aléatoire. Un script bash peut être utilisé pour créer un nombre aléatoire dans une plage ou une taille donnée. Cet article présente diverses méthodes pour générer des nombres aléatoires dans Bash.

Remarque : Vous pouvez obtenir différents nombres aléatoires lors de l’exécution des commandes ci-dessous.

Utilisation de la variable $RANDOM pour générer des nombres aléatoires

La variable $RANDOM peut être utilisée pour produire un nombre aléatoire ou une plage de valeurs aléatoires entre 0 et 32767. Cependant, vous pouvez limiter la plage de nombres utilisée pour générer des nombres aléatoires en divisant la valeur $RANDOM par une valeur spécifique.

Pour produire un nombre aléatoire entre 0 et 32767, utilisez la commande suivante :

$ echo $RANDOM

Production :

28091

Vous pouvez produire un nombre aléatoire à partir d’une plage spécifique en divisant la variable $RANDOM par la valeur restante. Il contient des doubles premières parenthèses (()) avec un symbole $.

Pour produire un nombre aléatoire entre 1 et 100, utilisez la commande suivante :

$ echo $(( $RANDOM % 100 + 1 ))

Production :

19

Le signe pourcentage faisant échouer l’opération mathématique modulo, le nombre 100 n’est jamais atteint (reste après division). Si le générateur aléatoire renvoyait la valeur 100, l’opération modulo fournirait la valeur 0.

Utilisation de la commande shuf pour générer des nombres aléatoires

Vous pouvez utiliser la commande shuf pour produire de nombreux nombres dans un script shell.

La commande suivante créera un seul entier entre 0 et 100 :

$ shuf -i 0-100 -n1

Production :

76

Dans la commande ci-dessus, -i désigne la plage d’entrée et -n désigne l’effectif. La clé -n est suivie de tout nombre positif, indiquant le nombre pour générer des nombres aléatoires. Exécutez la commande suivante pour imprimer cinq nombres aléatoires entre 0 et 100.

$ shuf -i 0-100 -n5

Production :

68
78
24
76
41

Utiliser /dev/urandom pour générer des nombres aléatoires

Le fichier de périphérique /dev/urandom permet de produire des nombres pseudo-aléatoires beaucoup plus aléatoires que la variable $RANDOM. Cependant, mettre ces nombres dans des variables dans un script implique un travail supplémentaire, comme le filtrage via od, comme le montre l’exemple.

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

L’option -t d indique que la décimale signée doit être utilisée comme format de sortie, et -N 1 indique au programme d’obtenir un octet de /dev/urandom.

Production :

124

Utiliser Awk pour générer des nombres aléatoires

La fonction rand() de awk renvoie un nombre aléatoire à virgule flottante dans la plage de 0 à 1. Les commandes qui suivent BEGIN seront exécutées avant l’étape suivante.

awk 'BEGIN{x=rand(); print x}'

Production :

0.444937