Pascal Получить случайное число в диапазоне - пример

Чтобы получить "случайные" числа в Паскале, необходимо:

  1. сначала инициализировать датчик этих чисел вызовом стандартной процедуры randomize()
  2. а затем получать очередное случайное число вызовом стандартной функции random(x) - где $x$ - правая граница диапазона $[0..(x-1)]$.

Пример:

var n, i, x: integer;
begin
    randomize(); // инициал. датчик случайных чисел (вызов стандартной процедуры)
 
    n := 5; // сколько чисел выводить
 
    for i := 1 to n do 
    begin
        x := random(100) - 50; // из диапапоза она от -50 до 49
        writeln(x); // печатаем значение
    end;
end.

В примере выше мы сдвигаем диапазон [0..99], который явно задаёт вызов random(100) с помощью вычитания необходимого значения, например -50 (в данном примере - это сдвиг влево).

 x := random (100) - 50; // из диапапоза она от -50 до 50

Здесь диапазон будет от -50 (включительно) до 49 (включительно), так как random(p) выдаёт значения от нуля до p-1, если $p\in\mathbb{N}$.

vedro-compota's picture

math2, спасибо!) использовал ваше замечание как авторитетное, если не секрет - на какой именно стандарт опирались - или экспериментально проверяли?)
обновлено: да, посмотрел - пишут что [0..(x-1)] -вы правы.

_____________
матфак вгу и остальная классика =)

Посмотрел в книге Немнюгина по TurboPascal.

Здесь тоже.

Random returns a random number larger or equal to 0 and strictly less than L. If the argument L is omitted, a Real number between 0 and 1 is returned (0 included, 1 excluded).