diff -ru nethack-3.4.1.orig/src/rnd.c nethack-3.4.1/src/rnd.c --- nethack-3.4.1.orig/src/rnd.c 2003-02-23 15:43:29.000000000 +0100 +++ nethack-3.4.1/src/rnd.c 2003-06-30 09:10:04.000000000 +0200 @@ -8,11 +8,15 @@ extern int NDECL(rand); #define RND(x) (rand() % x) #else /* LINT */ -# if defined(UNIX) || defined(RANDOM) +# if defined(BSD) || defined(ULTRIX) || defined(CYGWIN32) || defined(RANDOM) || defined(__APPLE__) #define RND(x) (int)(Rand() % (long)(x)) # else +# if defined(UNIX) /* glimz: fix RNG with lrand48() */ +#define RND(x) (int)(((x)&-(x)==(x))?(Rand()/(2147483648u/(x))):((Rand()>>3) % (x))) +# else /* Good luck: the bottom order bits are cyclic. */ #define RND(x) (int)((Rand()>>3) % (x)) +# endif # endif #endif /* LINT */