Kann es eine Variable geben, die eine Zufallszahl aus drei vorab festgelegten Zahlen auswählt?
Probe:
var= 10 or 100 or 1000
shell-script
variable
random
Espen Larsen
quelle
quelle
Antworten:
Verwenden Sie ein Array, um die Werte zu speichern, und wählen Sie sie mithilfe der integrierten Variablen aus
$RANDOM
. Beispielsweise,Die Qualität der Zufälligkeit wird nicht die bestmögliche sein (dafür Bytes lesen
/dev/urandom
), aber sie sollte für ein Skript mehr als gut genug sein.Anmerkung 1: Da die Menschen in den Kommentaren beobachtet haben, statt die Array - Elemente einzeln eine Dose Initialisierung natürlich ein Array Litteral benutzen
x=(10 100 1000)
.Anmerkung 2: Anstatt die Anzahl der Elemente im Array fest zu codieren, kann ein Radomelement mit extrahiert werden
${x[$RANDOM%${#x[@]}]}
.quelle
x=(10 100 1000)
ein Array aus einem Literal in bash erstellt. Dies wäre lesbarer und idiomatischerx[0]=10 # This sets the first value of x to ten. Ten is the number of fingers that humans have (excepting birth defects or mutilation). It is also the sum of 9 and 1, or product of 5 and 2. Ten is not prime. A traditional Christmas gift is ten lords a-leaping.
sowas?Wenn Sie bash (oder zsh oder ksh93 ) verwenden, können Sie einfach Folgendes tun:
oder
es var zuweisen
quelle
Sie können auch das GNU-
shuf
Dienstprogramm coreutils verwenden :Die Verwendung
RANDOM
der anderen Antworten ist jedoch mit ziemlicher Sicherheit schneller.quelle
quelle
Hier ist ein leicht kryptischer Weg:
Dies weist den Zufallswert nach
$var
Bedarf zu. Dieprintf
Formatzeichenfolge lautet1%0Nd
- dies führt0
dazu, dass sie mitN
führenden Nullen gedruckt wird , wobeiN
das Intervall eine zufällige Ganzzahl ist[1,3]
.quelle