509 Stimmen

Wie erzeugt man eine Zufallszahl in der Bash?

Wie generiert man in der Bash eine Zufallszahl innerhalb eines Bereichs?

602voto

Nelson Punkte 24693

Utilice $RANDOM . Sie ist oft in Kombination mit einfacher Shell-Arithmetik nützlich. Zum Beispiel, um eine Zufallszahl zwischen 1 und 10 (einschließlich) zu erzeugen:

$ echo $((1 + $RANDOM % 10))
3

Der eigentliche Generator befindet sich in variables.c die Funktion brand() . Ältere Versionen waren ein einfacher linearer Generator. Version 4.0 von bash verwendet eine Generator mit Zitierfunktion auf ein Papier von 1985, was vermutlich bedeutet, dass es eine gute Quelle für Pseudozufallszahlen ist. Ich würde es nicht für eine Simulation verwenden (und schon gar nicht für Krypto), aber für grundlegende Skripting-Aufgaben ist es wahrscheinlich ausreichend.

Wenn Sie etwas tun, das ernsthafte Zufallszahlen erfordert, können Sie /dev/random o /dev/urandom wenn sie verfügbar sind:

$ dd if=/dev/urandom count=4 bs=1 | od -t d

133voto

Andrew Hare Punkte 332190

Siehe bitte $RANDOM :

$RANDOM ist eine interne Bash-Funktion (keine Konstante), die eine pseudozufällige Ganzzahl im Bereich 0 - 32767. Sie sollte nicht verwendet werden, um einen Verschlüsselungsschlüssel zu erzeugen.

128voto

knipwim Punkte 1128

Sie können auch Folgendes verwenden shuf (verfügbar in coreutils).

shuf -i 1-100000 -n 1

54voto

Barun Punkte 2392

Versuchen Sie dies von Ihrer Shell aus:

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

Hier, -t d gibt an, dass das Ausgabeformat vorzeichenbehaftet dezimal sein soll; -N 1 sagt, dass ein Byte gelesen werden soll von /dev/urandom .

38voto

fraff Punkte 677

Ich mag diesen Trick:

echo ${RANDOM:0:1} # random number between 1 and 9
echo ${RANDOM:0:2} # random number between 1 and 99

...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X