Générer un nombre aléatoire dans Bash
-
Utilisation de la variable
$RANDOM
pour générer des nombres aléatoires -
Utilisation de la commande
shuf
pour générer des nombres aléatoires -
Utiliser
/dev/urandom
pour générer des nombres aléatoires - Utiliser Awk pour générer des nombres aléatoires
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