Article View: comp.lang.modula2
Article #1587Re: RND Function Needed
From: Adam Ravid
Date: Thu, 22 Nov 1990 22:43
Date: Thu, 22 Nov 1990 22:43
49 lines
1926 bytes
1926 bytes
eiverson@nmsu.edu (Eric Iverson) writes:
>
> I need a random number generator for Modula-2. Any help would be
> appreciated.
a nice and simple randomlib stolen from "Data Structures & Prog Design in
Modula-2," L.Nyhoff/S.Leestma (pp 35-37)
DEF MOD RandomLib;
PROC RandomCard (First,N:CARDINAL):CARDINAL;
PROC RandomReal () :REAL; (* returns 0.0-1.0 *)
END RandomLib.
IMP MOD RandomLib;
FROM InOut IMPORT WriteString, WriteLn, ReadCard; (*excluded on my lib*)
CONST (*I would have put these const in the def!*)
Mult =29;
Modulus =2048;
Addend =431;
VAR
Seed:CARDINAL;
PROC RandomReal ():REAL;
BEGIN
Seed := Seed * Mult + Addend;
Seed := Seed MOD Modulus;
RETURN FLOAT(Seed) / FLOAT(Modulus)
END RandomReal;
PROC RandomCard (First,N:CARDINAL):CARDINAL;
BEGIN
RETURN First + TRUNC(FLOAT(N) * RandomReal())
END RandomCard;
PROC GetSeed; (* I excluded this one in my lib *)
BEGIN
WriteLn;
WriteString ("Enter a seed for the random number generator");
WriteLn;
WriteString ("(preferable a prime number): ");
ReadCard (Seed);
Seed := Seed MOD Modulus
END GetSeed;
BEGIN (* library source, executed upon opening of calling program *)
GetSeed
END RandomLib;
Adam ...a word juggler in disguise....
----------------------------------------------------------------------------
pain!adamr cbcscaar@ma.secs.csun.edu
Technical Details
Message-ID:
<NN82s1w163w@pain>Path:
arc1-ca.pugleaf.net!utzoo!censor!geac!torsqnt!news-server.csri.toronto.edu!cs.utexas.edu!wuarchive!usc!srhqla!unigold!pain.UUCP!adamrReferences:
<EIVERSON.90Nov21033311@thrinakia.nmsu.edu>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!censor!geac!torsqnt!news-server.csri.toronto.edu!cs.utexas.edu!wuarchive!usc!srhqla!unigold!pain.UUCP!adamr From: adamr@pain (Adam Ravid) Newsgroups: comp.lang.modula2 Subject: Re: RND Function Needed Message-ID: <NN82s1w163w@pain> Date: 22 Nov 90 22:43:46 GMT References: <EIVERSON.90Nov21033311@thrinakia.nmsu.edu> Organization: Sequoia Public Access Info Network Lines: 49