Генерация случайного числа между 1 и 10 в Bash Shell Script

Как мне создать инклюзивное случайное число от 1 до 10 в Bash Shell Script?

Будет ли это $(RANDOM 1+10)?

Ответ 2

Самое простое решение - использовать инструмент, который позволяет вам напрямую указывать диапазоны, например shuf

shuf -i1-10 -n1

Если вы хотите использовать $RANDOM, было бы точнее выкинуть последние 8 чисел в 0... 32767 и просто обработать его как 0... 32759, так как принимать 0... 32767 mod 10 вы получаете следующее распределение

0-8 each: 3277 
8-9 each: 3276

Итак, немного медленнее, но точнее будет

while :; do ran=$RANDOM; ((ran < 32760)) && echo $(((ran%10)+1)) && break; done 

Ответ 3

Чтобы генерировать случайные числа с помощью bash, используйте внутреннюю функцию . Обратите внимание, что $RANDOM не следует использовать для генерации ключа шифрования. $RANDOM генерируется с использованием вашего текущего идентификатора процесса (PID) и текущего времени/даты, определяемого количеством секунд, прошедших с 1970 года.

 echo $RANDOM % 10 + 1 | bc

Ответ 4

Вы также можете использовать /dev/urandom:

grep -m1 -ao '[0-9]' /dev/urandom | sed s/0/10/ | head -n1

Ответ 5

Сгенерировать в диапазоне: {0,.., 9}

r=$(( $RANDOM % 10 )); echo $r

Чтобы создать в диапазоне: {40,.., 49}

r=$(( $RANDOM % 10 + 40 )); echo $r

Ответ 6

Вот пример псевдослучайного генератора, когда не доступно $RANDOM и /dev/urandom

echo $(дата +% S) | grep -o. $| sed s/0/10/