Comment générer un nombre aléatoire inclusif entre 1 et 10 dans le shell Bash script ?
Est-ce que ce serait $(RANDOM 1+10)
?
Comment générer un nombre aléatoire inclusif entre 1 et 10 dans le shell Bash script ?
Est-ce que ce serait $(RANDOM 1+10)
?
$(( ( RANDOM % 10 ) + 1 ))
EDIT. Changé les crochets en parenthèses selon le commentaire. http://web.archive.org/web/20150206070451/http://islandlinux.org/howto/generate-random-numbers-bash-scripting
La solution la plus simple serait d'utiliser un outil qui vous permet de spécifier directement les plages, comme gnu shuf
shuf -i1-10 -n1
Si vous voulez utiliser $RANDOM
il serait plus précis d'éliminer les 8 derniers chiffres de 0...32767 et de les traiter comme 0...32759, car en prenant 0...32767 mod 10, on obtient la distribution suivante
0-8 each: 3277
8-9 each: 3276
Donc, un peu plus lent mais plus précis, ce serait
while :; do ran=$RANDOM; ((ran < 32760)) && echo $(((ran%10)+1)) && break; done
Pour générer des nombres aléatoires avec bash, utilisez la fonction interne de Bash $RANDOM. Notez que $RANDOM ne doit pas être utilisé pour générer une clé de chiffrement. $RANDOM est généré en utilisant votre identifiant de processus (PID) actuel et la date et l'heure actuelles, définies par le nombre de secondes écoulées depuis 1970.
echo $RANDOM % 10 + 1 | bc
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.