From: "Damian Yerrick" Newsgroups: comp.os.msdos.djgpp Subject: Re: Saving random seed, and Allegro Date: Tue, 31 Aug 1999 23:58:31 -0500 Organization: Rose-Hulman Institute of Technology Lines: 64 Message-ID: <7qibto$oqr$1@solomon.cs.rose-hulman.edu> References: <7qhljj$245$3 AT news6 DOT svr DOT pol DOT co DOT uk> <37CC9150 DOT 2BFD0245 AT hmc DOT edu> NNTP-Posting-Host: 137.112.205.182 X-Trace: solomon.cs.rose-hulman.edu 936162040 25435 137.112.205.182 (1 Sep 1999 05:00:40 GMT) X-Complaints-To: news AT cs DOT rose-hulman DOT edu NNTP-Posting-Date: 1 Sep 1999 05:00:40 GMT X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.00.2314.1300 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Nate Eldredge wrote in message news:37CC9150 DOT 2BFD0245 AT hmc DOT edu... > Tom Morton wrote: > > > > Hello fellow human beings, > > > > I'm writing a game with allegro and djgpp and it requires a random > > number generator that can have it's seed saved and changed. Until > > now I have been using the rand() and srand() functions but I need > > to be able to store the state of the random number generator. Easy. Use this pseudorandom number function (adapted from the ANSI standard for C rand() ) and two accessors: /**** cut ****/ static int curSeed = 1; /* MyRandom() * Returns a random number from 0 to 32,767. */ int MyRandom(void) { curSeed = (curSeed * 1103515245) + 12345; return (curSeed & 0x7fff0000) >> 16; } /* SetSeed() * Replaces srand(). Sets the seed for MyRandom(). */ void SetSeed(int seed) { curSeed = seed; } /* GetSeed() * Returns the current seed for MyRandom() so it can be saved. */ int GetSeed(void) { return curSeed; } /**** and paste ****/ If you are using Allegro's install_timer(), an initial seed can be obtained by SetSeed(retrace_count); Assuming you have a struct or class with a member randSeed, and you have an instance thereof called myState: To save the seed, myState.randSeed = GetSeed(); To restore the seed, SetSeed(myState.randSeed); > Nate Eldredge > neldredge AT hmc DOT edu Damian Yerrick http://come.to/yerrick