Что такое функция Random() и процедура Randomize в языке Pascal. Как это работает?
Randomize — это процедура которая используется в Паскаль для включения генератора случайных чисел.
Функция Random определяет диапазон случайных чисел. Процедура Randomize и функция Random очень часто используются для демонстрации работы массивов в Паскаль.
Т.е. функция random возвращает нам число.
Пример :
Тут у нас переменная a может равняться числам от 0 до 9, не 10!!!!
Если мы хотим вывести числа от 0 до 1, то мы пишем следующее :
Т.е. random без всего.
Бывают случаи когда хочется иметь промежуток(диапазон) чисел. Допустим от -23 до 5, как его задать ?
Для начала мы складываем 23 и 5 без учета знаков и прибавляем 1(всегда) , у нас будет 29. Теперь пишем
Но это вернет нам числа от 0 до 28, теперь просто надо вычесть 23, не учитывая знаков. Так для промежутка c отрицательными числами.
С двумя положительными числами всё наоборот, сначала вычитаем из второго первое и прибавляем 1, мы получаем число, затем к нему прибавляем первое число :
Так же есть формула для всех случаев:
x := random(max-min+1)+min; // тут уже все знаки учитываются
Т.е. если нам нужен диапазон отрицательных чисел, например от -5 до -10, то мы пишем:
// -5 это максимальное значение, потому что оно больше -10, а -10 это минимальное
random(-5-(-10)+1)+(-10) // все знаки учитываются
В основном random и randomize в pascal используются вместе. Если использовать random отдельно, то у нас будут случайные числа постоянно одинаковы.
Допустим у нас есть код :
И при запуске программы у нас выведется допустим 3. И если мы запустим заново, то у нас снова выведется 3 и так при каждом запуске.
Для этого и используется randomize, чтобы числа не повторялись :
1 2 3 4 5 6 7 |
var a : integer; begin randomize; // пишем до использование random() a := random(10); writeln(a); readln; end; |
Если мы это напишем, то у нас функция random каждый раз при запуске программы будет выдавать разные числа.
Строка №8 Присваиваем переменной «a» случайные числа в диапазоне от 0 до 999 (т.е. от 0 до 1000, но, не включая число 1000) с помощью функции Random. Т.е. запись (1000) означает, что все сгенерированные числа будут не меньше 0 и не больше 999.
Предположим, что нам необходимо записать другой диапазон чисел, например от -1000 до 1000. В этом случае строка №8 будет иметь вид: a:= -1000 random(2001). Т.е. сначала записываем минимальное число диапазона (-1000), а в функции Random записываем сумму модуля минимального и максимального числа и прибавляем к ней 1. |-1000|+|1000|+1=2001. Таким образом, переменной «a» будут присвоены случайные числа в диапазоне от -1000 до 1000.
Эта программа в цикле будет выводить числа на экран от 1 до 999 пока не оно не станет равно 256:
program massiv4;
uses crt;
var a:integer;
begin
clrscr;
randomize;
repeat
a:=random(1000);
writeln(a);
until a=256;
readln
end.