Générer des nombres aléatoires dans Bash avec des exemples
Lors du codage de scripts Bash, en particulier lors du développement de scripts pour les tests de fonctionnalités, nous devons parfois générer un nombre aléatoire ou une entrée aléatoire. Il peut également être nécessaire que ces numéros se situent dans une plage spécifique. Cet article vous apprendra comment effectuer la génération de nombres aléatoires dans Bash.
Dans ce tutoriel, vous allez apprendre :
- Comment générer des nombres aléatoires dans Bash
- Comment générer des nombres aléatoires est une plage spécifique
- Exemples illustrant la génération de nombres aléatoires dans Bash
Générer des nombres aléatoires dans Bash avec des exemples
Configuration logicielle requise et conventions utilisées
Exemple 1 : Générer un nombre aléatoire à l’aide du générateur d’aléatoires
Générons un nombre aléatoire dans Bash :
echo $RANDOM
24758
echo $RANDOM
13
C’était simple, n’est-ce pas ?
Cette approche présente cependant quelques défis ; Il n’est pas très utilisable en l’état actuel : le nombre aléatoire pourrait être 1 ou 32000. Il convient également de noter que si le nombre renvoyé semble aléatoire, il est en fait influencé par la façon dont la variable d’entropie aléatoire (RANDOM=) est initialisée. Ce sera le point central d’un autre article. Un exemple rapide de la façon dont vous pouvez le rendre plus aléatoire serait ;
RANDOM=1
echo $RANDOM
16807
RANDOM=1
echo $RANDOM
16807
RANDOM=$(date +%s%N | cut -b10-19)
echo $RANDOM
18991
RANDOM=$(date +%s%N | cut -b10-19)
echo $RANDOM
11045
Notez que le nombre aléatoire 16807 n’est pas vraiment aléatoire, car le générateur aléatoire a été ensemencé avec le même 1.
La commande RANDOM=$ (date + %s %N | cut -b10-19) est un bien meilleur seeder d’entropie générateur aléatoire basé sur le temps de seconde et de nanoseconde.
Exemple 2 : Nombres dans une plage
La sélection de nombres aléatoires dans une plage est simple. Générons un nombre aléatoire entre 1 et 113 :
echo $(( $RANDOM % 113 + 1 ))
50
echo $(( $RANDOM % 113 + 1 ))
17
echo $(( $RANDOM % 113 + 1 ))
95
Et nous pouvons également utiliser une syntaxe/commande alternative. Cette fois, nous allons générer un nombre aléatoire entre 1 et 117 :
echo $[ $RANDOM % 117 + 1 ]
113
echo $[ $RANDOM % 117 + 1 ]
71
echo $[ $RANDOM % 117 + 1 ]
10
Pour augmenter le minimum d’une plage donnée, vous pouvez simplement augmenter le +1 à un nombre plus élevé.
Prenons l’exemple suivant, en générant un nombre aléatoire compris entre 11 et 30 :
echo $[ $RANDOM % 20 + 11 ]
21
Conclusion
Dans cet article, nous avons appris à générer un nombre aléatoire dans Bash, dans n’importe quelle plage préférée. Nous avons également abordé brièvement le fonctionnement de l’aléatoire dans Bash via un générateur aléatoire initialisé par une graine d’entropie.
Montrez-nous quelques-unes de vos $RANDOM créations dans les commentaires ci-dessous ! Jouir!
