, ,

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

Pour obtenir un nombre aléatoire dans l'intervalle [0-32767] depuis le shell, on peut utiliser la variable $RANDOM.

Pour limiter la valeur maximum de l'intervalle entre [0-N] avec N < 32767, on peut utiliser l'opérateur modulo. Lorsqu'on divise un nombre par N, le reste de la division est toujours compris entre [0-(N-1)]. Le reste est disponible via l'opérateur modulo.

# La fonction alea écrit sur la sortie standard un
# nombre aléatoire compris entre 0 et le nombre passé
# en argument
alea () {
   echo $(( $RANDOM % ( $1 + 1 ) ))
}
On fait ici le choix d'écrire sur la sortie standard plutôt que d'utiliser le mot clé return car celui-ci ne peut retourner qu'une valeur comprise entre [0-127]. On récupère ensuite cette valeur en utilisant la syntaxe de substitution de commande : $( … )
n1=$( alea 100 )
n2=$( alea 33 )
 
echo $n1 $n2