В некоторых задачах требуется, чтобы данные программы были случайными в определенных пределах. Для реализации такой возможности во всех языках программирования присутствуют встроенные функции, код которых выдает случайные числа. На самом деле числа не совсем случайные, а псевдослучайные. Дело в том, что искусственно реализовать случайность невозможно. Обычно берется некоторый коэффициент, и с его помощью вычисляется каждое последующее «случайное» число.
Как создаются случайные числа?
Специально для выполнения данной задачи , в языке pascal существует функция random().
Как работает random()?
Эта функция возвращает случайное число от 0 до того числа , которое находится в скобках.
random(10)
Например нам нужно получить любое число от 0 до 9 , тогда функция random() будет выглядеть так :
Случайные числа от 0 до 9
Проще говоря , функция random() возвращает столько случайных чисел сколько написано в скобках , начиная с 0. То есть , если в скобках написано число 10 , то функция возвращает любое из 10 чисел от 0 до 9.
Но что если нам нужны числа от -15 до 15 ?
Для этого нам понадобится дополнить данную функцию .
Теперь мы будем заносить значение в переменную . Для того , чтобы занести в переменную X любое число от -15 до +15 :
x:= random(26)-15
Программа:
program mypascal;
uses
crt;
var
x:integer;
begin
randomize;
x:= random(21)-10;
writeln(x);
end.
Ещё пример, чтобы получить случайное число от -100 до 100 достаточно записать такое выражение: random (200) – 100. В результате, сначала будет получено число из диапазона [0, 199], а затем из него будет вычтена сотня. И если случайное число было меньше 100, то результат выражения будет отрицательным.
В примере программы сначала с помощью процедуры randomize инициализируется датчик случайных чисел. Далее переменной n присваивается случайное значение в диапазоне [5, 12). Значение переменной n используется для определения количества итераций цикла for. В цикле for генерируются случайные числа в диапазоне [0, 50) и выводятся на экран.
var n, i, x: integer;
begin
randomize;
n := random (7) + 5;
for i := 1 to n do begin
x := random (101) - 50;
write (x:5)
end;
readln
end.
Чтобы понять как это работает , нужно понять какое минимально число можно получить в random(100). Минимально число 0 , а максимальное 99. Но при любом числе из него будут вычитать 50. Проще говоря , минимальное число будет 0-50 ( -50 ) ,а максимальное 100-50 (50 ).
А значит любое число в промежутке от -50 до 50.
Заметьте , что для использования функции random() нам понадобится подключить дополнительный модуль crt. Модуль crt подключается так : uses crt;
Для получения случайных чисел , также требуется использовать функцию randomize.
|