Возможно ли иметь переменную, которая выбирает случайное число из трех заранее определенных чисел?
Образец:
var= 10 or 100 or 1000
shell-script
variable
random
Эспен Ларсен
источник
источник
Ответы:
Используйте массив для хранения значений и выбирайте среди них встроенную переменную
$RANDOM
. Например,Качество случайности не будет наилучшим (читайте байты
/dev/urandom
для этого), но оно должно быть более чем достаточно для сценария.Примечание 1: Как люди наблюдали в комментариях, вместо того , чтобы инициализировать элементы массива по отдельности , конечно , можно использовать litteral массива:
x=(10 100 1000)
.Примечание 2: Вместо жесткого кодирования количества элементов в массиве, элемент radom может быть извлечен с помощью
${x[$RANDOM%${#x[@]}]}
.источник
x=(10 100 1000)
создает массив из литерала в bash, это было бы более читабельным и более идиоматическимx[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.
что-то подобное?Если вы используете bash (или zsh или ksh93 ), вы можете просто сделать:
или
назначить его в var
источник
Вы также можете использовать
shuf
утилиту GNU coreutils :Использование
RANDOM
в соответствии с другими ответами почти наверняка быстрее, хотя.источник
источник
Вот немного загадочный способ:
Это назначит случайное значение
$var
как требуется.printf
Форматная строка1%0Nd
- это приводит0
к печататься сN
ведущими нулями, гдеN
будет случайным целым числом в интервале[1,3]
.источник