Переменная, случайным образом выбранная из трех чисел (10, 100 и 1000)

Возможно ли иметь переменную, которая выбирает случайное число из трех заранее определенных чисел?

Образец:

var= 10 or 100 or 1000 

5 Solutions collect form web for “Переменная, случайным образом выбранная из трех чисел (10, 100 и 1000)”

Используйте массив для хранения значений и выберите их с помощью встроенной переменной $RANDOM . Например,

 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 

Качество случайности не будет лучшим (чтение байтов из /dev/urandom для этого), но это должно быть более чем достаточно для скрипта.

Примечание 1: Как люди наблюдали в комментариях, вместо инициализации элементов массива индивидуально можно, конечно, использовать массив litteral: x=(10 100 1000) .

Примечание 2: вместо жесткого кодирования количество элементов в массиве элемент radom может быть извлечен с помощью ${x[$RANDOM%${#x[@]}]} .

Если вы используете bash (или zsh или ksh93 ), вы можете просто сделать:

 echo "$((10**($RANDOM%3+1)))" 

или

 var=$((10**($RANDOM%3+1))) 

присвоить его var

Вы также можете использовать утилиту GNU coreutils shuf :

 a=$(shuf -n1 -e 10 100 1000) 

Использование RANDOM в соответствии с другими ответами почти наверняка будет быстрее.

 case $(( RANDOM % 3 )) in 0) var=10 ;; 1) var=100 ;; 2) var=1000 ;; esac 

Вот несколько загадочный способ:

 printf -v var '1%0*d' $(( RANDOM % 3 + 1 )) 0 

Это будет присвоить случайное значение $var мере необходимости. Строка формата printf равна 1%0Nd – это приводит к тому, что 0 печатается с N ведущими нулями, где N будет случайным целым в интервале [1,3] .

  • Сценарий Bash для мониторинга безопасности сервера?
  • Заменить несколько строк в текстовом файле фиксированным шаблоном
  • Получение различных частей линии
  • Как передать имя функции тестируемому?
  • Как определить и загрузить свою собственную функцию оболочки в zsh
  • Отложить переменное расширение до подоболочки
  • Сортировка нескольких файлов csv на основе двух столбцов в каталоге
  • Получение проблемы с разделителем при выполнении сценария
  • Что делает <(команда)?
  • проверьте, если сценарий оболочки принимает аргумент командной строки перед запуском
  • Включение подпараметров в варианты справки для правильного выполнения без getopt или getopts?
  • Linux и Unix - лучшая ОС в мире.