Число, которое изменяется при каждом выполнении скрипта, называется случайным числом, и оно непредсказуемо. Случайные числа используются в программировании для различных целей, таких как тестирование данных, генерация лотерейных билетов, генерация пароля и т. д. Целое число или плавающее число можно использовать для генерации случайного числа в bash. Случайное число определенного диапазона или размера можно сгенерировать с помощью сценария bash. В этой статье были показаны различные способы генерации случайных чисел в bash.
Случайное число или диапазон случайных чисел можно сгенерировать с помощью переменной $RANDOM. По умолчанию он генерирует случайное число от 0 до 32767. Но вы можете установить диапазон чисел для генерации случайных чисел, разделив значение $RANDOM на определенное значение. Различные варианты использования переменной $RANDOM для генерации случайных чисел показаны в следующей части статьи.
Здесь показаны способы генерации случайного числа в терминале и выполнения файла сценария.
Выполните следующую команду, чтобы сгенерировать случайное число в диапазоне от 0 до 32767.
$ echo $RANDOM
Вы можете сгенерировать случайное число из определенного диапазона, разделив переменную $RANDOM на определенное значение и получив оставшееся значение. Выполните следующую команду, чтобы сгенерировать случайное число в диапазоне от 1 до 50. Здесь используются двойные первые скобки с символом $.
$ echo $(( $RANDOM % 50 + 1 ))
Выполните следующую команду, чтобы сгенерировать случайное число в диапазоне от 10 до 40. Здесь использовалась третья скобка с символом $.
$ echo $[ $RANDOM % 40 + 10 ]
Создайте файл bash с помощью следующего сценария, чтобы сгенерировать случайное число из определенного диапазона, где минимальное и максимальное значения диапазона будут взяты от пользователя. Сообщение об ошибке будет отображаться, если взятое максимальное значение меньше минимального значения. Если разница между максимальным и минимальным значением равна 1, отобразится другое сообщение об ошибке. Случайное число будет генерироваться при каждом выполнении этого скрипта, если в качестве входных данных будут приняты допустимые минимальное и максимальное значения.
#!/bin/bash # Сгенерировать случайный диапазон, определенный пользователем # Взять верхнее и нижнее значение из пользовательского echo Введите минимальное значение:" read minimum echo "Введите максимальное значение:" read maximum # Проверить взятые значения действительны if [[ $maximum < $minimum ]]; then echo "Максимальное значение не может быть ниже минимального" exit 1 fi # Найти разницу между числами diff=$(($maximum-$minimum)) # Проверьте разницу значение if [[ $diff == 1 ]]; then echo "Диапазон чисел должен быть больше 1" exit 1 fi # Сгенерировать случайное число randomNumber=$(($minimum + $RANDOM % $maximum)) #Распечатать сгенерированное число echo "Сгенерированное случайное число: $randomNumber"
Следующий вывод появится, если сценарий выполняется несколько раз. Здесь приведенный выше сценарий был выполнен трижды. Сообщение об ошибке было напечатано для первых двух выполнений из-за недопустимого ввода, а для последнего выполнения было сгенерировано случайное число.
Использование команды `shuf` — еще один способ сгенерировать случайное число из определенного диапазона. В этой статьи были показаны способы генерации случайного числа из терминала и использования сценария.
Выполните следующую команду, чтобы сгенерировать случайное число от 0 до 50 с помощью команды `shuf`.
$ shuf -i 0-50 -n1
Согласно следующему выводу, указанная выше команда была выполнена три раза, и были сгенерированы три случайных числа.
Создайте файл bash со следующим сценарием для создания списка случайных чисел на основе входного значения. Цикл for использовался для многократного выполнения команды`shuf`, чтобы сгенерировать список случайных чисел от 1 до 100 и распечатать числа.
##!/bin/bash # Генерируется случайное с помощью `shuf` команды echo "How many random numbers do you want to generate?:" read number #Print сгенерированные случайные числа echo "The generated random numbers are:" for n in `seq "$number"` do randomNumber=$(shuf -i 1-100 -n1) echo $randomNumber done
Следующие выходные данные показывают, что 5 было принято в качестве входного значения и было сгенерировано 5 случайных чисел, которые не больше 100 и не меньше 1.
/dev/urandom можно использовать с разными командами для генерации разных типов случайных значений. Его нельзя использовать для указания значений диапазона, таких как команда shuf и переменная $RANDOM. Но количество цифр случайного числа можно определить в команде с помощью /dev/urandom. Использование команды od с /dev/urandom показано в следующей части этого руководства. Эта команда может использоваться для указания количества байтов, где каждый байт может быть определен десятичным числом от 0 до 255.
Выполните следующую команду, чтобы сгенерировать случайное число от 0 до 255.
$ od -A n -t d -N 1 /dev/urandom
Выходные данные показывают, что указанная выше команда была выполнена три раза, и здесь были сгенерированы три разных случайных числа, значения которых не превышают 255.
В этой статье на различных примерах были объяснены три различных способа генерации случайных чисел. Кодер может генерировать определенный диапазон случайных чисел с помощью переменной $RANDOM или команды shuf в bash. Кодировщик может использовать /dev/urandom с любой другой командой для генерации случайного числа байтов определенной длины или длины. Генерация случайных чисел — очень распространенное требование для программирования, и я надеюсь, что читатели смогут сгенерировать случайное число в соответствии со своими требованиями после прочтения этого руководства.