.png)
Ist es möglich, eine Variable zu haben, die eine Zufallszahl aus drei vorher festgelegten Zahlen auswählt?
Probe:
var= 10 or 100 or 1000
Antwort1
Verwenden Sie ein Array, um die Werte zu speichern und wählen Sie mithilfe der integrierten Variable zwischen ihnen aus $RANDOM
. Beispiel:
x[0]=10 # One decade
x[1]=100 # One century
x[2]=1000 # One millennium
for ((i=1; i < 20; ++i)); do echo -n " ${x[$RANDOM%3]}"; done; echo
1000 10 10 10 10 100 10 100 100 10 10 100 100 100 10 1000 1000 1000 10
Die Qualität der Zufälligkeit wird nicht die bestmögliche sein (lesen Sie /dev/urandom
dazu Bytes von), aber für ein Skript sollte sie mehr als gut genug sein.
Anmerkung 1:Wie in den Kommentaren angemerkt wurde, kann man statt der individuellen Initialisierung der Array-Elemente natürlich auch ein Array-Literal verwenden: x=(10 100 1000)
.
Anmerkung 2:Anstatt die Anzahl der Elemente im Array fest zu codieren, kann ein Radom-Element durch extrahiert werden ${x[$RANDOM%${#x[@]}]}
.
Antwort2
Wenn SieSchlag(oderzshoderksh93) können Sie einfach Folgendes tun:
echo "$((10**($RANDOM%3+1)))"
oder
var=$((10**($RANDOM%3+1)))
um es zuzuordnenvar
Antwort3
Sie können auch die GNU Coreutils verwendenshuf
Dienstprogramm:
a=$(shuf -n1 -e 10 100 1000)
Die Verwendung RANDOM
gemäß den anderen Antworten ist jedoch mit ziemlicher Sicherheit schneller.
Antwort4
Hier ist eine etwas kryptische Möglichkeit:
printf -v var '1%0*d' $(( RANDOM % 3 + 1 )) 0
Dadurch wird der Zufallswert nach $var
Bedarf zugewiesen. Die printf
Formatzeichenfolge lautet 1%0Nd
- dies bewirkt, dass mit führenden Nullen 0
gedruckt wird , wobei eine zufällige Ganzzahl im Intervall ist .N
N
[1,3]