Path: 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: Date: 22 Nov 90 22:43:46 GMT References: Organization: Sequoia Public Access Info Network Lines: 49 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