Случайные числа
Часто в задачах требуется выполнить различные действия с большим количеством чисел. В таких случаях вводить все числа становится просто неудобно и долго. Для этого в Паскале придуман генератор случайных чисел - оператор random. От программиста лишь требуется задать числовые промежутки ( например от 2 до 50 ) , все остальное программа выполнит сама. Итак как добавить к коду программы оператор random .
Для начала необходимо предварительно описать оператор (то есть фактически мы сообщаем программе , что будет использован генератор случайных чисел ). Для этого необходимо ввести оператор randomize в промежутке после begin и до random (обычно оператор randomize ставят сразу после begin , так как это упрощает чтение кода ) . Затем идет присвоение оператора random к выбранной переменной. Делается это так:
Для Turbo Pascal
оператор:= random (max-min+1)+min;
- оператор - любая переменная
- min - целое число , не превышающее max
- max - целое число, большее min
Здесь min и max являются диапазонами генератора случайных чисел. Пример генератора случайных чисел от 2 до 5 .
var x:integer;
begin
randomize;
x :=random (4)+2;
Для Pascal ABC
Можно применять оператор random так же как и для Turbo Pascal , однако есть еще один вариант , более простой в использовании.
оператор:= random (min,max);
- оператор - любая переменная
- min - целое число , не превышающее max
- max - целое число, большее min
Чтобы разница лучше просматривалась решим тот же пример генератора случайных чисел от 2 до 5 этим способом.
var x:integer;
begin
randomize;
x :=random (2,5);
end;
Процедура Randomize - инициализирует генератор чисел. Функция Random (N) выдает целочисленные значения в диапазоне от 0 до N-1 ! Например, чтобы сгенерировать число X в диапазоне -N..N , пишем так:
Randomize;
X := Random (N + 1) - 2 * N;
Диапазон в Паскале тех самых случайных чисел от a до b задается формулой:
Пример 1: необходим интервал [-50 .. 50].
Длина интервала 101, смещение начала интервала -50.
random(101)-50
Пример 2: необходим интервал [20 .. 30].
Длина интервала - 11, смещение начала интервала 20.
random(11)+20
Пример 3: необходим интервал [-1000 .. -500]
Длина интервала 501, смещение начала интервала -1000
random(501)-1000
Пример 4: a[i]:=random(100); {каждый элемент примет значение из интервала 0..99}
Пример 5:
x := random (100) - 50; // из диапапоза она от -50 до 50
Здесь диапазон будет от -50 (включительно) до 49 (включительно), так как random(p) выдаёт значения от нуля до p-1, если p∈Np∈N.