ПАСКАЛЬ: точка повернення, підстановка аргументів, зберігання змінних
var t : integer;
beginwrite('Задайте ціле від 0 до ', m-1, '>'); readln(t);
Rand1 := t
end;
begin
if First then
begin First := false; V := Rand1 end
else V := ( a*V+ c ) mod m;
NextRand := V
end;
Тепер можна записувати цю функцію та її виклики в програмах, де потрібно імітувати появу випадкових чисел. Проте краще помістити цю функцію в модуль (п.7.2 ) з ім'ям, наприклад, Randoms, транслювати його та у програмі вказувати лише його використання: uses Randoms.
Використання модулів дозволяє розв'язати нашу задачу взагалі без використання локальних статичних змінних. Справа в тім, що змінні, означені в модулі, як і змінні програми, є статичними. Тому модуль можна записати в такому вигляді:
Unit Randoms;
Interface
function NextRand : integer;
Implementation
const m=1001; a=21; c=57; var V : integer; First : Boolean;
function Rand1: integer;
var t : integer;
begin
write('Задайте ціле від 0 до ', m-1, '>'); readln(t);
Rand1 := t
end;
function NextRand;