Логотип

Сгенерировать случайное число в bash

Bash Heredoc

Число, которое изменяется при каждом выполнении скрипта, называется случайным числом, и оно непредсказуемо. Случайные числа используются в программировании для различных целей, таких как тестирование данных, генерация лотерейных билетов, генерация пароля и т. д. Целое число или плавающее число можно использовать для генерации случайного числа в bash. Случайное число определенного диапазона или размера можно сгенерировать с помощью сценария bash. В этой статье были показаны различные способы генерации случайных чисел в bash.

 

Использование случайного генератора:

Случайное число или диапазон случайных чисел можно сгенерировать с помощью переменной $RANDOM. По умолчанию он генерирует случайное число от 0 до 32767. Но вы можете установить диапазон чисел для генерации случайных чисел, разделив значение $RANDOM на определенное значение. Различные варианты использования переменной $RANDOM для генерации случайных чисел показаны в следующей части статьи.

 

Генерация случайных чисел с использованием переменной $RANDOM:

Здесь показаны способы генерации случайного числа в терминале и выполнения файла сценария.

 

A. Генерация случайных чисел с терминала

Выполните следующую команду, чтобы сгенерировать случайное число в диапазоне от 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"

 

Читать  Команды Linux Как предотвратить ошибку SSH Broken Pipe

Следующий вывод появится, если сценарий выполняется несколько раз. Здесь приведенный выше сценарий был выполнен трижды. Сообщение об ошибке было напечатано для первых двух выполнений из-за недопустимого ввода, а для последнего выполнения было сгенерировано случайное число.

 

Генерация случайных чисел с помощью команды shuf:

Использование команды `shuf` — еще один способ сгенерировать случайное число из определенного диапазона. В этой статьи были показаны способы генерации случайного числа из терминала и использования сценария.

A. Генерация случайных чисел с терминала

Выполните следующую команду, чтобы сгенерировать случайное число от 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:

/dev/urandom можно использовать с разными командами для генерации разных типов случайных значений. Его нельзя использовать для указания значений диапазона, таких как команда shuf и переменная $RANDOM. Но количество цифр случайного числа можно определить в команде с помощью /dev/urandom. Использование команды od с /dev/urandom показано в следующей части этого руководства. Эта команда может использоваться для указания количества байтов, где каждый байт может быть определен десятичным числом от 0 до 255.

Читать  Преобразование из одного сайта на WordPress в подсайт с помощью WP-CLI и Bash

Выполните следующую команду, чтобы сгенерировать случайное число от 0 до 255.

$ od -A n -t d -N 1 /dev/urandom

 

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

 

Заключение:

В этой статье на различных примерах были объяснены три различных способа генерации случайных чисел. Кодер может генерировать определенный диапазон случайных чисел с помощью переменной $RANDOM или команды shuf в bash. Кодировщик может использовать /dev/urandom с любой другой командой для генерации случайного числа байтов определенной длины или длины. Генерация случайных чисел — очень распространенное требование для программирования, и я надеюсь, что читатели смогут сгенерировать случайное число в соответствии со своими требованиями после прочтения этого руководства.

Редактор: AndreyEx

Рейтинг: 4.5 (132 голоса)
Если статья понравилась, то поделитесь ей в социальных сетях:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

6 + 19 =

Это может быть вам интересно


Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала