Czy można mieć zmienną, która wybiera losową liczbę z trzech wcześniej ustalonych liczb?
Próba:
var= 10 or 100 or 1000
shell-script
variable
random
Espen Larsen
źródło
źródło
Odpowiedzi:
Użyj tablicy do przechowywania wartości i wybierz jedną z nich za pomocą wbudowanej zmiennej
$RANDOM
. Na przykład,Jakość losowości nie będzie najlepsza z możliwych (w tym celu odczytane bajty
/dev/urandom
), ale powinna być wystarczająco dobra dla skryptu.Uwaga 1: Jak ludzie zaobserwowali w komentarzach, zamiast inicjowanie elementów tablicy indywidualnie Można oczywiście użyć litteral tablicy:
x=(10 100 1000)
.Uwaga 2: Zamiast zakodować na stałe liczbę elementów w tablicy, element radomowy można wyodrębnić za pomocą
${x[$RANDOM%${#x[@]}]}
.źródło
x=(10 100 1000)
tworzy tablicę z dosłownego bash, byłoby to bardziej czytelne i bardziej idiomatycznex[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.
coś takiego?Jeśli używasz bash (lub zsh lub ksh93 ), możesz po prostu zrobić:
lub
przypisać go do var
źródło
Możesz także użyć
shuf
narzędzia GNU coreutils :Korzystanie
RANDOM
z innych odpowiedzi jest jednak prawie na pewno szybsze.źródło
źródło
Oto nieco tajemniczy sposób:
Spowoduje to przypisanie losowej wartości do
$var
potrzeb.printf
Ciąg format1%0Nd
- to powoduje,0
który ma zostać wydrukowany zN
wiodącymi zerami, gdzieN
będzie losową liczbę całkowitą z przedziału[1,3]
.źródło