§ 18. Линейные программы | Случайные и псевдослучайные числа

Планирование уроков на учебный год (по учебнику К.Ю. Полякова, Е.А. Еремина, углубленный уровень)


Уроки 26 - 29
§18. Линейные программы




Содержание урока

Переменные

Работа с переменными

Арифметические выражения

Операции с целыми числами

Вывод данных на экран

Операции с вещественными числами

Случайные и псевдослучайные числа

Выводы. Интеллект-карта

Вопросы и задания

Практическая работа № 7 «Линейные программы»

Практическая работа № 8 «Операции с целыми числами»

Практическая работа № 9 «Операции с вещественными числами»

Практическая работа № 10 «Случайные числа»


Случайные и псевдослучайные числа


В некоторых задачах, например в компьютерных играх, необходимо моделировать случайные явления, например результат бросания игрального кубика (на нём может выпасть число от 1 до 6). Как сделать это на компьютере, который «неслучаен», т. е. строго выполняет заданную ему программу?

Случайные числа — это последовательность чисел, в которой невозможно предсказать следующее число, даже зная все предыдущие.

Чтобы получить истинно случайные числа, можно, например, бросать игральный кубик или измерять какой-то шумовой сигнал (например, шум радиоэфира или сигнал, принятый из космоса). Так раньше составлялись таблицы случайных чисел, которые публиковались в книгах.

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

Чтобы выйти из положения, математики придумали алгоритмы получения псевдослучайных чисел («как бы случайных»). Для стороннего наблюдателя псевдослучайные числа практически неотличимы от случайных, но они вычисляются по некоторой математической формуле: зная первое число («зерно»), можно по формуле вычислить второе, затем третье и т. п. 

В алгоритмическом языке существуют две функции для получения случайных (точнее, псевдослучайных) чисел:

rand (а, b) — случайное вещественное число в полуинтервале [а; b) (не включая b);
irand(a, b) — случайное целое число на отрезке [а; b].

В Паскале есть аналогичные функции:

• random — случайное вещественное число в полуинтервале [0; 1);
• random (N) — случайное целое число на отрезке [0; N-1].

Для того чтобы записать в целую переменную n случайное целое число на отрезке [1; 6] (результат бросания кубика), можно использовать такие операторы:

n:=irand(1, 6)               n:=random(6)+1;


Разберём подробно оператор на языке Паскаль. Вызов random (6) даёт нам случайное целое число на отрезке [0; 5]. Если мы добавляем к этому значению единицу, то весь отрезок сдвигается на единицу вправо, получается отрезок [1; 6], что нам и требовалось. В общем случае для получения случайного числа на отрезке [а; b] в Паскале нужно использовать вызов

n:=random(b-a+1)+а;


Докажите, что по этой формуле действительно получаются случайные числа на отрезке [а; b].

Вещественное случайное число в полуинтервале от 5 до 12 (не включая 12) получается так:

x:=rand(5, 12)               х:=7*random+5;


В общем виде, для полуинтервала [а; b):

x:=rand(a, b)               х:=(b-a)*random+a;


Докажите, что по этой формуле действительно получаются случайные числа в полуинтервале [а; b).

Следующая страница Выводы. Интеллект-карта



Cкачать материалы урока








Наверх