package body RANDOM is --Crude random number generator MULTIPLIER: constant :=5#1#E4; X:SMALL -- Hidden internal state :=123; -- Default initial value for lazy users procedure INIT(X0:in SMALL) is -- Sets X0 as Initial Value begin if X0 mod 2 =0 then raise CONSTRAINT_ERROR; -- initial values are spec'd to be odd else X:=X0; end if; end INIT; function NEXT return SMALL is -- gives number in sequence begin X:=SMALL((INTEGER(X)*MULTIPLIER) mod MODULUS); return X; end NEXT; end RANDOM;