Чтение онлайн

на главную - закладки

Жанры

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

Купер Мендель

Шрифт:

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

Пример 9-24. Выбор случайной карты из колоды

#!/bin/bash

# pick-card.sh

# Пример выбора случайного элемента массива.

# Выбор случайной карты из колоды.

Suites="Треф

Бубей

Червей

Пик"

Denominations="2

3

4

5

6

7

8

9

10

Валет

Дама

Король

Туз"

suite=($Suites) # Инициализация массивов.

denomination=($Denominations)

num_suites=${#suite[*]} # Количество элементов массивов.

num_denominations=${#denomination[*]}

echo -n "${denomination[$((RANDOM%num_denominations))]} "

echo ${suite[$((RANDOM%num_suites))]}

# $bozo sh pick-cards.sh

# Валет Треф

# Спасибо "jipe," за пояснения по работе с $RANDOM.

exit 0

Jipe подсказал еще один способ генерации случайных чисел из заданного диапазона.

# Генерация случайных чисел в диапазоне 6 - 30.

rnumber=$((RANDOM%25+6))

# Генерируется случайное число из диапазона 6 - 30,

#+

но при этом число должно делиться на 3 без остатка.

rnumber=$(((RANDOM%30/3+1)*3))

# Упражнение: Попробуйте разобраться с выражением самостоятельно.

Насколько случайны числа, возвращаемые функцией $RANDOM? Лучший способ оценить "случайность" генерируемых чисел -- это написать сценарий, который будет имитировать бросание игрального кубика достаточно большое число раз, а затем выведет количество выпадений каждой из граней...

Пример 9-25. Имитация бросания кубика с помощью RANDOM

#!/bin/bash

# Случайные ли числа возвращает RANDOM?

RANDOM=$$ # Инициализация генератора случайных чисел числом PID процесса-сценария.

PIPS=6 # Кубик имеет 6 граней.

MAXTHROWS=600 # Можете увеличить, если не знаете куда девать свое время.

throw=0 # Счетчик бросков.

zeroes=0 # Обнулить счетчики выпадения отдельных граней.

ones=0 # т.к. неинициализированные переменные - "пустые", и не равны нулю!.

twos=0

threes=0

fours=0

fives=0

sixes=0

print_result

{

echo

echo "единиц = $ones"

echo "двоек = $twos"

echo "троек = $threes"

echo "четверок = $fours"

echo "пятерок = $fives"

echo "шестерок = $sixes"

echo

}

update_count

{

case "$1" in

0) let "ones += 1";; # 0 соответствует грани "1".

1) let "twos += 1";; # 1 соответствует грани "2", и так далее

2) let "threes += 1";;

3) let "fours += 1";;

4) let "fives += 1";;

5) let "sixes += 1";;

esac

}

echo

while [ "$throw" -lt "$MAXTHROWS" ]

Поделиться:
Популярные книги

Белые погоны

Лисина Александра
3. Гибрид
Фантастика:
фэнтези
попаданцы
технофэнтези
аниме
5.00
рейтинг книги
Белые погоны

Черный дембель. Часть 1

Федин Андрей Анатольевич
1. Черный дембель
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Черный дембель. Часть 1

Лишняя дочь

Nata Zzika
Любовные романы:
любовно-фантастические романы
8.22
рейтинг книги
Лишняя дочь

Темный Лекарь 5

Токсик Саша
5. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 5

Последний из рода Демидовых

Ветров Борис
Фантастика:
детективная фантастика
попаданцы
аниме
5.00
рейтинг книги
Последний из рода Демидовых

Чиновникъ Особых поручений

Кулаков Алексей Иванович
6. Александр Агренев
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чиновникъ Особых поручений

Попаданка в академии драконов 4

Свадьбина Любовь
4. Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
7.47
рейтинг книги
Попаданка в академии драконов 4

Боги, пиво и дурак. Том 6

Горина Юлия Николаевна
6. Боги, пиво и дурак
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Боги, пиво и дурак. Том 6

Курсант: Назад в СССР 10

Дамиров Рафаэль
10. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Курсант: Назад в СССР 10

Сделай это со мной снова

Рам Янка
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сделай это со мной снова

Болотник 2

Панченко Андрей Алексеевич
2. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Болотник 2

Камень Книга двенадцатая

Минин Станислав
12. Камень
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Камень Книга двенадцатая

Небо для Беса

Рам Янка
3. Самбисты
Любовные романы:
современные любовные романы
5.25
рейтинг книги
Небо для Беса

Надуй щеки! Том 4

Вишневский Сергей Викторович
4. Чеболь за партой
Фантастика:
попаданцы
уся
дорама
5.00
рейтинг книги
Надуй щеки! Том 4