File: RANDOM.PS of Tape: Various/Decus/decus-3
(Source file text) 

PROGRAM ZUFALLSZAHLEN(OUTPUT);

  CONST R0 = 2097149    (* 2^21 - 3 *);
        ALFA = 2051     (* 2^11 + 3 *);
        BASE = 2097152  (* 2^21 *);

  VAR   RN,I,N: INTEGER;
        H: ARRAY[0..9] OF INTEGER;
        X: REAL;

  FUNCTION RANDOM: REAL;
        BEGIN  RN := (RN*ALFA) MOD BASE;
            RANDOM := RN/BASE
        END;


BEGIN  RN := R0;
    FOR I := 0 TO 9 DO H[I] := 0;
    FOR N := 1 TO 1000 DO
        BEGIN  X := RANDOM;
            WRITE(X :16:10); IF N MOD 5 = 0 THEN WRITELN;
            I := TRUNC(10*X);
            H[I] := H[I] + 1
        END;
    WRITELN;
    FOR I := 0 TO 9 DO WRITE(H[I]:8);  WRITELN
END.