Zufallszahl in der Bash generieren

Nilesh Katuwal 30 Januar 2023
  1. Verwenden der Variable $RANDOM zum Generieren von Zufallszahlen
  2. Verwendung des shuf-Befehls zum Generieren von Zufallszahlen
  3. Verwenden von /dev/urandom zum Generieren von Zufallszahlen
  4. Verwenden von Awk zum Generieren von Zufallszahlen
Zufallszahl in der Bash generieren

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