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

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

Образец:

var= 10 or 100 or 1000 

  • Синтаксическая ошибка: неиспользуемая строка при использовании regexp_replace в сценарии bash
  • Использование xargs с git
  • Меню Bash с несколькими параметрами в одной строке
  • Вызов функции, которая вызывает другую функцию с циклом for
  • Команда одиночной строки для протоколирования IP-адресов
  • Могу ли я помещать диапазоны в параметры?
  • Исправить файловую оболочку
  • Что означает «пока:»?
  • 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] .

    Linux и Unix - лучшая ОС в мире.