profile="http://gmpg.org/xfn/11"> Pascal (Паскаль) функция Random, процедура Randomize. | Разработчику о работе с 1С:Предприятие, Pascal, Паскаль

Pascal (Паскаль) функция Random, процедура Randomize.

Pascal (Паскаль) функция Random, процедура Randomize.
1. Общие сведения.
Функция Random в Паскале определяет диапазон случайных чисел.

program Random_1;

  {Используем функцию Random}
var
  sN: integer;  {Переменная для сохранения псевдослучайного числа}
begin
  WriteLn('Программа для демонстрации функции Random');
  sN := Random(10) + 1;  {интервал [0..9]+1, в результате получаем интервал [1..10]}
  WriteLn('Случайное число : ', sN);
  WriteLn('Нажмите <Enter>, чтобы выйти.');
  Readln();
end.

В результате исполнения кода появляется практически одно и тоже число. На самом деле в Паскале, как в прочем во всех языках, используется ряд псевдослучайных чисел. Чтобы запускать новый ряд псевдослучайных чисел, каждый раз при работе программы, необходимо использовать процедуру в Паскале: Randomize.

Программный код:

program Random_1;

  {Используем функцию Random и  и процедуру Randomize}
var
  sN: integer;  {Переменная для сохранения псевдослучайного числа}
begin
Randomize;
  WriteLn('Программа для демонстрации функции Random  и процедуры Randomize');
  sN := Random(10) + 1;  {интервал [0..9]+1, в результате получаем интервал [1..10]}
  WriteLn('Случайное число : ', sN);
  WriteLn('Нажмите <Enter>, чтобы выйти.');
  Readln();
end.

Добавим в наш код возможность повторения кода, то есть вводим цикл while. Так же удалим (комментарий) процедуру Randomize.

Код:

program Random_1;

  {Используем только Random, повторение псевдослучайного ряда чисел}
var
  sN: integer;  {Переменная для сохранения псевдослучайного числа}
  i, N: integer; { переменные для цикла }
begin
  i := 0;
  N := 20;
  //Randomize;// закомментировали
  WriteLn('Программа: только функция Random в цикле');
  while i <= N do  // оператор цикла
  begin
    sN := Random(10) + 1;  {интервал [0..9]+1, в результате получаем [1..10]}
    WriteLn('Случайное число : ', sN);
    i := i + 1;
  end;
  WriteLn('Нажмите <Enter>, чтобы выйти.');
  Readln();
end.

Код только Randomi
Код только Random.

Скомпилируем наш код. Запускаем несколько раз полученную программу Код только Random (без Randomize). При каждом запуске, в окне увидим один и тот же ряд чисел.

Результат работы кода только один Random
Результат работы кода только один Random.

Убираем комментарий, вводим оператор Randomize. Снова компилируем, теперь выводится новый ряд чисел при каждом запуске программы.
Вывод: Генератор псевдослучайных числ работает только с функцией Random и процедурой Randomize вместе.

2. Использование параметра Random.
Набираем такой код:

program Random_1;

  { Random, параметры}
var
  sN: integer;  {Переменная для сохранения псевдослучайного числа}
  i, N: integer; { переменные для цикла }
begin
  i := 0;
  N := 20;
  Randomize;
  WriteLn('Программа: функция Random параметры');
  while i <= N do  // оператор цикла
  begin
    sN := Random();
    WriteLn('Случайное число : ', sN);
    i := i + 1;
  end;
  WriteLn('Нажмите <Enter>, чтобы выйти.');
  Readln();
end.

Компилируем программу — выскакивает ошибка:

Ошибка компиляции функция Random
Ошибка компиляции функция Random.

Почему возникла ошибка компиляции?
Функция Random без параметров возвращает тип значения real в интервале [0…1]. А переменная sN тип integer. Изменим ее тип на real.
Компиляция прошла без ошибок.

Random без указания параметра
Random без указания параметра.

Ошибка возникла потому, что язык Паскаль является строго типизированным. Нельзя присваивать переменной типа Integer, значение другого типа.

Если необходимо получить не только значения целых чисел в определенном интервале, но и значения вещественных чисел в определенном интервале, например [0…10], перепишем код:

program Random_0_10;

  { Random, параметры}
var
  sN: real;  {Переменная для сохранения псевдослучайного числа}
  i, N: integer; { переменные для цикла }
begin
  i := 0;
  N := 20;
  Randomize;
  WriteLn('Программа: функция Random интервал от 0 до 10');
  while i <= N do  // оператор цикла
  begin
    sN := Random() * 10; // [0...10]
    WriteLn('Случайное число : ', sN: 10: 2);
    i := i + 1;
  end;
  WriteLn('Нажмите <Enter>, чтобы выйти.');
  Readln();
end.

Random вывод вещественных чисел в интервале от 0 до 10
Random вывод вещественных чисел в интервале от 0 до 10.

Function Random [ ( sN : Word) ] : тип параметра;
Возвращает:
Если sN неопределенный, тогда значение случайного числа от 0 до 1, включая ноль.
Если sN определенный, тогда значение случайного числа от 0 до sN. включая ноль.

Дополнительный материал:
Найти минимум и максимум в массиве – Pascal (Паскаль).
Найти сумму элементов массива с четными индексами в паскале.
Нахождение среднего арифметического, паскаль.
Сумма элементов (чисел) массива паскаль, random.
Программа угадай число, паскаль.
Подсчитать количество отрицательных и положительных элементов массива, заданного датчиком случайных чисел. Паскаль.
Массив в Паскале (Pascal).

2 комментария на “Pascal (Паскаль) функция Random, процедура Randomize.”

  • Рут:

    Не совсем понял, что значит случайные числа? Зачем они нужны?

    • Дмитрий:

      Случайные числа широко используются в программировании. Например игры. Если бы не было случайных чисел, то любая игра потеряла бы свою привлекательность. С помощь случайных чисел появление игровых персонажей определяются случайным образом. Поэтому игрок не может предугадать появление персонажа и его действия. Но! Это только один способ использования случайных чисел. Как вариант игры: Программа угадай число, паскаль.