Article View: comp.lang.modula2
Article #1420Re: RND Function Needed
From: Eric Iverson
Date: Tue, 27 Nov 1990 08:01
Date: Tue, 27 Nov 1990 08:01
92 lines
2588 bytes
2588 bytes
Just in case anyone cares, this is the random number generator Ted
Dunning hacked out today:
IMPLEMENTATION MODULE Rand;
(* 7^5 is a reasonable linear congruential generator for 32 bit
arithmetic, longs should be at least that long, see cacm october
or november 1988 *)
FROM Clock IMPORT (* Type *) SystemTime,
(* Procedure *) GetSystemTime;
FROM MathLib IMPORT Entier;
TYPE
LONGSEED = ARRAY[0..55] OF LONGINT;
VAR
Seed : LONGSEED;
Next : INTEGER;
PROCEDURE SetSeed ( );
VAR
I : INTEGER;
N : LONGINT;
S : SystemTime;
BEGIN (* SetSeed *)
GetSystemTime(S);
N := S.seconds + S.microSeconds;
FOR I := 0 TO 55 DO
Seed[I] := N;
N := 7*N;
N := 7*N;
N := 7*N;
N := 7*N;
N := 7*N;
IF ( N < 0 ) THEN
N := -N;
END (* IF *);
IF ( N < 0 ) THEN
N := 0;
END;
END (* FOR *);
Next := 0;
END SetSeed;
PROCEDURE Random ( ):REAL;
VAR
K: INTEGER;
BEGIN
K := Next-24;
IF ( K < 0 ) THEN
K := K+56;
END (* IF *);
Seed[Next] := Seed[Next] + Seed[K];
K := Next-55;
IF ( K < 0 ) THEN
K := K+56;
END (* IF *);
Seed[Next] := Seed[Next] + Seed[K];
K := Next;
Next := Next+1;
IF ( Next >= 56 ) THEN
Next := 0;
END (* IF *);
IF ( Seed[K] < 0 ) THEN
Seed[K] := -Seed[K];
END (* IF *);
IF ( Seed[K] < 0 ) THEN
Seed[K] := 0;
END;
RETURN FLOAT(Seed[K])/2147483647.0;
END Random;
BEGIN (* Rand *)
SetSeed;
END Rand.
--
------------------------------------------------------------------------
Eric Iverson Internet: eiverson@nmsu.edu
Computing Research Lab
Box 30001/3CRL Life is something to do when
New Mexico State University you can't get to sleep.
Las Cruces, NM 88003-0001 -Fran Lebowitz
VOICE: (505) 646-5711
FAX: (505) 646-6218
Technical Details
Message-ID:
<EIVERSON.90Nov27010159@aigyptos.nmsu.edu>Path:
arc1-ca.pugleaf.net!utzoo!censor!geac!torsqnt!news-server.csri.toronto.edu!cs.utexas.edu!swrinde!zaphod.mps.ohio-state.edu!maverick.ksu.ksu.edu!unmvax!ariel.unm.edu!nmsu!opus!eiversonReferences:
<1484.2750D9EC@puddle.fidonet.org>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!censor!geac!torsqnt!news-server.csri.toronto.edu!cs.utexas.edu!swrinde!zaphod.mps.ohio-state.edu!maverick.ksu.ksu.edu!unmvax!ariel.unm.edu!nmsu!opus!eiverson From: eiverson@nmsu.edu (Eric Iverson) Newsgroups: comp.lang.modula2 Subject: Re: RND Function Needed Message-ID: <EIVERSON.90Nov27010159@aigyptos.nmsu.edu> Date: 27 Nov 90 08:01:59 GMT References: <1484.2750D9EC@puddle.fidonet.org> Sender: news@NMSU.Edu Organization: Computing Research Lab Lines: 92 In-reply-to: Jon.Guthrie@p15.f20.n226.z1.fidonet.org's message of 24 Nov 90 17:37:39 GMT