"Информатика (в 2 частях)", Павлов Д.И., Полежаева О.А., Коробкова Л.Н. и др./ Под ред. Горячева А.В.
Случайность позволяет программе получать заранее неизвестный результат из заданного набора вариантов. Управление связывает этот результат с целью: программа проверяет условия, выбирает действие и изменяет состояние объекта. Такие алгоритмы нужны в играх, моделях, программах для роботов и системах, которые должны реагировать на меняющуюся обстановку. Главное — различать случайный выбор и действие по состоянию объекта.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Случайность — отсутствие заранее известного единственного результата при одних и тех же условиях. Например, заранее нельзя точно назвать число, которое выпадет при броске кубика. Это понятие нужно, чтобы описывать процессы, где известны возможные варианты, но неизвестно, какой из них наступит.
Случайное событие — событие, которое может произойти или не произойти в результате случайного процесса. Появление препятствия в игре или выпадение шестёрки являются примерами таких событий. Определение помогает программе решать, нужно ли выполнять особое действие.
Случайное число — число, выбираемое программой случайным образом из заданного диапазона. Например, генератор может выбрать целое число от 1 до 6. Случайные числа нужны для моделирования бросков, выбора вариантов и непредсказуемого изменения параметров.
Управление — воздействие на объект для достижения поставленной цели или изменения его состояния. Командой управления может быть остановка робота, поворот персонажа или включение сигнала. Это понятие показывает, как программа не только наблюдает ситуацию, но и влияет на неё.
Полностью определённый процесс каждый раз приводит к одному и тому же результату, если начальные условия и команды не изменились. У случайного процесса есть несколько возможных исходов, поэтому заранее можно назвать только их набор, но не конкретный результат. Причина неопределённости может быть связана с внешними событиями, броском предмета или специально добавленным в программу случайным выбором.
Компьютер чаще всего имитирует случайность с помощью генератора случайных чисел. Это алгоритм, который по внутреннему правилу создаёт последовательность чисел, выглядящую непредсказуемой для обычного пользователя. Такая случайность является моделью: программа воспроизводит нужные свойства случайного процесса, хотя вычисления сами по себе выполняются по правилам.
Чтобы получить случайное число, задают диапазон: нижнюю и верхнюю границы. Генератор выбирает значение внутри этих границ, а программа использует его как результат броска, номер варианта или величину изменения. Например, число от 1 до 6 может обозначать грань кубика, а число от 1 до 3 — один из трёх маршрутов.
Случайным числом можно моделировать не только готовый результат, но и событие или параметр. Если выпало 1 из 10, программа может считать, что препятствие появилось; если выбранное число равно 2, можно изменить скорость или направление. Так один и тот же механизм помогает создавать разнообразие и проверять разные варианты развития процесса.
Команда условия связывает случайность с управлением: программа сначала получает результат, затем сравнивает его с правилом и выбирает действие. Но одного случайного выбора недостаточно, если объект уже находится в определённом состоянии. Надёжное управление учитывает положение, наличие препятствия и результат предыдущей команды, а затем повторно проверяет ситуацию и при необходимости меняет план.
В таблице показано, какие части алгоритма задаются заранее, а какие появляются во время выполнения. При чтении полезно проследить путь от возможных исходов и случайного числа к условию, действию и изменению объекта.
| Элемент | Что задаётся заранее | Что определяется случайно или по условию | Роль в алгоритме |
|---|---|---|---|
| Случайное событие | Диапазон возможных исходов | Наступивший исход | Создаёт непредсказуемую ситуацию |
| Случайное число | Границы диапазона | Конкретное выбранное число | Моделирует выбор или случайное изменение |
| Условие управления | Правило проверки | Результат проверки | Определяет дальнейшую команду |
| Управляющее действие | Цель и набор допустимых действий | Выбранное действие | Изменяет состояние объекта |
Задача 1. Составить алгоритм, который пять раз выбирает случайное число от 1 до 6 и подсчитывает, сколько раз выпала шестёрка. Нужно отделить повторяющуюся часть от подсчёта результата. Для этого подойдут цикл, генератор случайных чисел и счётчик.
Ответ. Алгоритм состоит из цикла на пять повторений и проверки результата каждого выбора. Счётчик показывает, сколько раз среди пяти чисел встретилась шестёрка; его значение может быть любым от 0 до 5.
Задача 2. В игре персонаж должен случайно выбрать один из трёх маршрутов, но при обнаружении препятствия изменить направление. Сначала случайность нужна для выбора начального пути, а затем управление должно опираться на состояние дороги. Поэтому выбор маршрута и реакцию на препятствие нельзя объединять в одно случайное действие.
Ответ. Случайное число выбирает стартовый маршрут, а условие определяет реакцию на препятствие. Повторная проверка не позволяет персонажу продолжать движение по заблокированному пути.
Задача 3. Робот должен при случайном появлении помехи остановиться, объехать её и продолжить движение. Случайность здесь моделирует появление помехи, но само управление должно учитывать фактическое состояние робота и дороги. Алгоритм удобно разделить на наблюдение, проверку, действие и новый контроль.
Ответ. Робот действует не по одному случайному сигналу, а по циклу наблюдения и корректировки. Если после объезда путь всё ещё закрыт, алгоритм должен выбрать другое допустимое действие.
Считать случайное число полностью непредсказуемым физическим явлением. Так думают, потому что результат нельзя угадать заранее. Проверить себя можно, вспомнив: компьютер обычно использует алгоритм-имитацию, а не настоящий бросок предмета.
Задать неправильные границы диапазона. Ошибка возникает, когда путают минимальное и максимальное значения или забывают, входит ли граница в диапазон. Нужно проверить несколько результатов и убедиться, что ни одно число не выходит за объявленные пределы.
Использовать случайный выбор там, где нужно условие. Иногда случайностью пытаются заменить проверку состояния объекта, хотя действие должно зависеть от наличия препятствия или другой причины. Следует спросить себя, известен ли нужный ответ после наблюдения за объектом.
Не проверять состояние после действия. Программист может предположить, что поворот или остановка всегда сработали. Самопроверка проста: после каждой команды изменения нужно снова получить состояние объекта и решить, что делать дальше.
Для алгоритмов со случайностью и управлением нужны присваивание, ветвление, повторение и логические условия. Эти команды позволяют сохранить результат, проверить его и многократно реагировать на события. Тема продолжает изучение алгоритмов и моделей, с помощью которых программы описывают процессы.
Знания применяются при создании игр, имитационных и обучающих программ, а также алгоритмов для роботов. Во всех этих случаях программа получает данные, выбирает действие и наблюдает, изменилось ли состояние объекта нужным образом.
Может ли компьютер действительно получить случайное число?
Обычно компьютер использует генератор псевдослучайных чисел — алгоритм, который создаёт последовательность, похожую на случайную. Поэтому в учебных программах компьютерная случайность является моделью, а не полностью независимым физическим явлением.
Как указать диапазон, из которого выбирается случайное число?
Нужно задать нижнюю и верхнюю границы диапазона, например от 1 до 6. После этого генератор выбирает одно из чисел, входящих в указанный диапазон.
Чем случайный выбор отличается от выбора по условию?
При случайном выборе результат определяется генератором случайных чисел. При выборе по условию программа проверяет известное состояние или значение и действует по заранее заданному правилу.
Зачем проверять состояние объекта после управляющего действия?
Действие может изменить ситуацию не так, как предполагалось, или препятствие может остаться. Повторная проверка позволяет вовремя скорректировать управление и не продолжать работу вслепую.
Где случайность и управление используются в реальных программах?
Они встречаются в компьютерных играх, имитационных моделях, обучающих программах, робототехнике и автоматических системах. Например, игра случайно создаёт препятствие, а персонаж или робот выбирает действие с учётом его положения.
25. Случайность и управление