Функция Random и Процедура Randomize в Pascal.

pascalquestВ чем заключается вопрос: Что такое функция Random() и процедура Randomize в языке Pascal. Как это работает?

Сложность : легкая .

И так что такое random и randomize в pascal ?

Randomize — это процедура которая используется в Паскаль для включения генератора случайных чисел. Функция Random определяет диапазон случайных чисел. Процедура Randomize и функция Random очень часто используются для демонстрации работы массивов в Паскаль.

Т.е. функция random возвращает нам число.

Пример :

var a : integer;
---------------
a := random(10);

И тут у нас переменная a может равняться числам от 0 до 9, не 10!!!!

Если мы хотим вывести числа от 0 до 1, то мы пишем следующее :

var a : integer;
---------------
a := random;

Т.е. random без всего.

Бывают случаи когда хочется иметь промежуток(диапазон) чисел. Допустим от -23 до 5, как его задать ?

Для начала мы складываем 23 и 5 без учета знаков и прибавляем 1(всегда) , у нас будет 29. Теперь пишем

var a : integer;
---------------
a := random(29);

Но это вернет нам числа от 0 до 28, теперь просто надо вычесть 23, не учитывая знаков. Так для промежутка c отрицательными числами.

С двумя положительными числами всё наоборот, сначала вычитаем из второго первое и прибавляем 1, мы получаем число, затем к нему прибавляем первое число :

5 до 29 = 29 - 5 + 1 = random(25) + 5

-1 до 13 = 13 + 1 + 1 = random(15) - 1

Так же есть формула для всех случаев:

x := random(max-min+1)+min; // тут уже все знаки учитываются

Т.е. если нам нужен диапазон отрицательных чисел, например от -5 до -10, то мы пишем:

// -5 это максимальное значение, потому что оно больше -10, а -10 это минимальное

random(-5-(-10)+1)+(-10) // все знаки учитываются

В основном random и randomize в pascal используются вместе. Если использовать random отдельно, то у нас будут случайные числа постоянно одинаковы.

Допустим у нас есть код :

var a : integer;
begin
   a := random(10);
   writeln(a);
   readln;
end;

И при запуске программы у нас выведется допустим 3. И если мы запустим заново, то у нас снова выведется 3 и так при каждом запуске.

Для этого и используется randomize, чтобы числа не повторялись :

var a : integer;
begin
   randomize; // пишем до использование random()
   a := random(10);
   writeln(a);
   readln;
end;

Если мы это напишем, то у нас функция random каждый раз при запуске программы будет выдавать разные числа.

Вот и весь вопрос.

17 комментариев

  1. I was suggested this blog through my cousin. I’m no longer
    sure whether this submit is written by him as no one else recognize such distinctive approximately
    my trouble. You’re amazing! Thank you! — Calator prin Romania.

  2. Можно ли обновить random внутри подпрограммы? Чтобы при каждом её использовании цифры не повторялись. Randomize ведь обновляет полько при запуске основной программы, так? Тоже очень заинтересовался вопросом Дмитрия

  3. Можно ли обновить random внутри подпрограммы? Чтобы при каждом её использовании цифры не повторялись. Randomize ведь обновляет полько при запуске основной программы, так?

Написать ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *