Пример 9-23. Генерация случайных чисел
Пример 9-23. Генерация случайных чисел
#!/bin/bash
# $RANDOM возвращает различные случайные числа при каждом обращении к ней.
# Диапазон изменения: 0 - 32767 (16-битовое целое со знаком).
MAXCOUNT=10
count=1
echo
echo "$MAXCOUNT случайных чисел:"
echo "-----------------"
while [ "$count" -le $MAXCOUNT ] # Генерация 10 ($MAXCOUNT) случайных чисел.
do
number=$RANDOM
echo $number
let "count += 1" # Нарастить счетчик.
done
echo "-----------------"
# Если вам нужны случайные числа не превышающие определенного числа,
# воспользуйтесь оператором деления по модулю (остаток от деления).
RANGE=500
echo
number=$RANDOM
let "number %= $RANGE"
echo "Случайное число меньше $RANGE --- $number"
echo
# Если вы желаете ограничить диапазон "снизу",
# то просто производите генерацию псевдослучайных чисел в цикле до тех пор,
# пока не получите число большее нижней границы.
FLOOR=200
number=0 # инициализация
while [ "$number" -le $FLOOR ]
do
number=$RANDOM
done
echo "Случайное число, большее $FLOOR --- $number"
echo
# Эти два способа могут быть скомбинированы.
number=0 #initialize
while [ "$number" -le $FLOOR ]
do
number=$RANDOM
let "number %= $RANGE" # Ограничение "сверху" числом $RANGE.
done
echo "Случайное число в диапазоне от $FLOOR до $RANGE --- $number"
echo
# Генерация случайных "true" и "false" значений.
BINARY=2
number=$RANDOM
T=1
let "number %= $BINARY"
# let "number >>= 14" дает более равномерное распределение
# (сдвиг вправо смещает старший бит на нулевую позицию, остальные биты обнуляются).
if [ "$number" -eq $T ]
then
echo "TRUE"
else
echo "FALSE"
fi
echo
# Можно имитировать бросание 2-х игровых кубиков.
SPOTS=7 # остаток от деления на 7 дает диапазон 0 - 6.
ZERO=0
die1=0
die2=0
# Кубики "выбрасываются" раздельно.
while [ "$die1" -eq $ZERO ] # Пока на "кубике" ноль.
do
let "die1 = $RANDOM % $SPOTS" # Имитировать бросок первого кубика.
done
while [ "$die2" -eq $ZERO ]
do
let "die2 = $RANDOM % $SPOTS" # Имитировать бросок второго кубика.
done
let "throw = $die1 + $die2"
echo "Результат броска кубиков = $throw"
echo
exit 0
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Приложение Б Генератор случайных чисел ядра
Приложение Б Генератор случайных чисел ядра В ядре Linux реализован генератор случайных чисел, который теоретически может генерировать истинно случайные числа. Генератор случайных чисел собирает в пул энтропии шумы внешней среды, которые поступают из драйверов
5.28. Генерирование случайных чисел
5.28. Генерирование случайных чисел Если вас устраивают псевдослучайные числа, вам повезло. Именно они предоставляются в большинстве языков, включая и Ruby.Метод rand из модуля Kernel возвращает псевдослучайное число x с плавающей точкой, отвечающее условиям x >= 0.0 и x < 1.0.
11.6. Генерация случайных чисел
11.6. Генерация случайных чисел ПроблемаТребуется сгенерировать несколько случайных чисел в формате с плавающей точкой в интервале значений [0.0, 1.0) при равномерном их распределении.РешениеСтандарт C++ предусматривает наличие C-функции библиотеки этапа исполнения rand,
6.5.4. Устройства генерирования случайных чисел
6.5.4. Устройства генерирования случайных чисел Специальные устройства /dev/random и /dev/urandom предоставляют доступ к средствам генерирования случайных чисел, встроенным в ядро Linux.Большинство аналогичных программных функций, например функция rand() стандартной библиотеки языка С,
Генерация случайных чисел
Генерация случайных чисел Прежде всего, давайте опишем, что мы понимаем под случайным числом (random number). Без четкого определения термина мы будем неуверенно себя чувствовать при разработке и реализации генератора случайных чисел.Будет ли число 2 случайным числом? Просто
Выводы по алгоритмам генерации случайных чисел
Выводы по алгоритмам генерации случайных чисел В предыдущем разделе были рассмотрены несколько достаточно простых генераторов случайных чисел. Наилучшие последовательности чисел позволяют получить два последних генератора, но, к сожалению, они выдвигают жесткие
Другие распределения случайных чисел
Другие распределения случайных чисел Если случайные числа используются для моделирования некоторого процесса, то вы можете обнаружить, что все рассмотренные выше генераторы случайных чисел не позволяют решить поставленную задачу. Это вызвано равномерным
9.6. $RANDOM: генерация псевдослучайных целых чисел
9.6. $RANDOM: генерация псевдослучайных целых чисел $RANDOM -- внутренняя функция Bash (не константа), которая возвращает псевдослучайные целые числа в диапазоне 0 - 32767. Функция $RANDOM не должна использоваться для генераци ключей
Пример 22-3. Наибольшее из двух чисел
Пример 22-3. Наибольшее из двух чисел #!/bin/bash# max.sh: Наибольшее из двух целых чисел.E_PARAM_ERR=-198 # Если функции передано меньше двух параметров.EQUAL=-199 # Возвращаемое значение, если числа равны.max2 () # Возвращает наибольшее из двух чисел.{ # Внимание: сравниваемые
Пример 22-4. Преобразование чисел в римскую форму записи
Пример 22-4. Преобразование чисел в римскую форму записи #!/bin/bash# Преобразование чисел из арабской формы записи в римскую# Диапазон: 0 - 200# Расширение диапазона представляемых чисел и улучшение сценария# оставляю вам, в качестве упражнения.# Порядок использования: roman
Пример 22-6. Сравнение двух больших целых чисел
Пример 22-6. Сравнение двух больших целых чисел #!/bin/bash# max2.sh: Наибольшее из двух БОЛЬШИХ целых чисел.# Это модификация предыдущего примера "max.sh",# которая позволяет выполнять сравнение больших целых чисел.EQUAL=0 # Если числа равны.MAXRETVAL=255 # Максимально возможное
Пример A-18. Генерация простых чисел, с использованием оператора деления по модулю (остаток от деления)
Пример A-18. Генерация простых чисел, с использованием оператора деления по модулю (остаток от деления) #!/bin/bash# primes.sh: Генерация простых чисел, без использования массивов.# Автор: Stephane Chazelas.# Этот сценарий не использует класический алгоритм "Решето Эратосфена",#+ вместо него
У11.9 Генерация случайных чисел
У11.9 Генерация случайных чисел Напишите класс, реализующий алгоритм получения псевдослучайных чисел, основанный на последовательности: ni = f(ni - 1), где функция f задана, а начальное значение n0 определяется клиентом класса. Функция не должна иметь побочных эффектов.