Zufallszahl in der Bash generieren
-
Verwenden der Variable
$RANDOM
zum Generieren von Zufallszahlen -
Verwendung des
shuf
-Befehls zum Generieren von Zufallszahlen -
Verwenden von
/dev/urandom
zum Generieren von Zufallszahlen - Verwenden von Awk zum Generieren von Zufallszahlen
In Bash kann eine Ganzzahl oder Float verwendet werden, um eine Zufallszahl zu erzeugen. Ein Bash-Skript kann verwendet werden, um eine Zufallszahl innerhalb eines bestimmten Bereichs oder einer bestimmten Größe zu erstellen. Dieser Artikel zeigt verschiedene Methoden zum Generieren von Zufallszahlen in Bash.
Hinweis: Sie erhalten möglicherweise unterschiedliche Zufallszahlen, wenn Sie die folgenden Befehle ausführen.
Verwenden der Variable $RANDOM
zum Generieren von Zufallszahlen
Die Variable $RANDOM
kann verwendet werden, um eine Zufallszahl oder einen Bereich von Zufallswerten zwischen 0
und 32767
zu erzeugen. Sie können jedoch den Zahlenbereich einschränken, der zum Generieren von Zufallszahlen verwendet wird, indem Sie den Wert $RANDOM
durch einen bestimmten Wert dividieren.
Verwenden Sie den folgenden Befehl, um eine Zufallszahl zwischen 0 und 32767 zu erzeugen:
$ echo $RANDOM
Ausgabe:
28091
Sie können eine Zufallszahl aus einem bestimmten Bereich erzeugen, indem Sie die Variable $RANDOM
durch den verbleibenden Wert teilen. Es enthält doppelte erste Klammern (())
mit einem $
-Symbol.
Verwenden Sie den folgenden Befehl, um eine Zufallszahl zwischen 1 und 100 zu erzeugen:
$ echo $(( $RANDOM % 100 + 1 ))
Ausgabe:
19
Da das Prozentzeichen die mathematische Operation modulo zum Scheitern bringt, wird die Zahl 100 nie erreicht (Rest nach Division). Wenn der Zufallsgenerator den Wert 100 zurückgeben würde, würde die Modulo-Operation den Wert 0 liefern.
Verwendung des shuf
-Befehls zum Generieren von Zufallszahlen
Mit dem Befehl shuf
können Sie in einem Shell-Skript zahlreiche Zahlen erzeugen.
Der folgende Befehl erstellt eine einzelne Ganzzahl zwischen 0 und 100:
$ shuf -i 0-100 -n1
Ausgabe:
76
Im obigen Befehl bezeichnet -i
den Eingabebereich und -n
die Kopfzahl. Auf die Taste -n
folgt eine beliebige positive Zahl, die die Zahl angibt, um Zufallszahlen zu erzeugen. Führen Sie den folgenden Befehl aus, um fünf Zufallszahlen zwischen 0 und 100 zu drucken.
$ shuf -i 0-100 -n5
Ausgabe:
68
78
24
76
41
Verwenden von /dev/urandom
zum Generieren von Zufallszahlen
Mit der Gerätedatei /dev/urandom
können Sie Pseudozufallszahlen erzeugen, die viel zufälliger sind als die Variable $RANDOM
. Diese Zahlen in einem Skript in Variablen zu packen, erfordert jedoch weitere Arbeit, wie zum Beispiel das Filtern über od
, wie im Beispiel gezeigt.
od /dev/urandom -A n -t d -N 1
Die Option -t d
gibt an, dass als Ausgabeformat vorzeichenbehaftete Dezimalzahlen verwendet werden sollen, und -N 1
weist das Programm an, ein Byte aus /dev/urandom
zu holen.
Ausgabe:
124
Verwenden von Awk zum Generieren von Zufallszahlen
Die Funktion rand()
von awk
gibt eine zufällige Gleitkommazahl im Bereich von 0 - 1 zurück. Die auf BEGIN
folgenden Befehle werden vor dem nächsten Schritt ausgeführt.
awk 'BEGIN{x=rand(); print x}'
Ausgabe:
0.444937