[MUD-Dev] Algorithms for an Infinite Universe

Ola Fosheim Grøstad <olag@ifi.uio.no> Ola Fosheim Grøstad <olag@ifi.uio.no>
Wed Oct 13 22:14:18 CEST 1999


Quzah wrote:
> Is it just me, or is this guy totally, 100% wrong? I've
> tried both by following his explanation, and by just taking
> his code, to get his pesudo-random number generator to
> work, and it doesn't. He's wrong.

Ack... I only skimmed the article. Hoped it would generate some discussion,
not this kind of discussion though. :(

> A quick copy-paste into a text file and his pseudo-random
> generator returns all zeros for the random numbers. Sad.

Yeah, but replace Max with a prime (2039 for example) and it should work.

This random generator will hopefully work (haven't tried it in five years,
but...):

#define RND_A 16807
#define RND_M 2147483647
#define RND_Q 127773
#define RND_R 2836
/* RND_Q = M DIV A  RND_R = M MOD A */

long rnd_seed;

long random(){
    long tmp_seed;
    tmp_seed = RND_A * (rnd_seed % RND_Q) - RND_R*(rnd_seed/RND_Q);
    rnd_seed = (tmp_seed >= 0 ? tmp_seed : tmp_seed + RND_M);
    return rnd_seed;
}

/** if 16 bit mod is cheap ***/

unsigned short frnd_seed;
unsigned short frnd_a;
#define FRND_A 17
#define FRND_M 65521

unsigned short fastrandom(){
    return frnd_seed = (unsigned short)(((unsigned long)FRND_A *frnd_seed)
                       % (unsigned short)FRND_M);
}

--
Ola





_______________________________________________
MUD-Dev maillist  -  MUD-Dev at kanga.nu
http://www.kanga.nu/lists/listinfo/mud-dev



More information about the mud-dev-archive mailing list