Can't generate random number within whole span of non-negative integers

Better.

Include (-
[ GenerateRandomNumber n m s x;
    if (n==m) return n;
    if (n>m) {  s = n; n = m; m = s; }
    x = 1 + m - n;
    if (x > 0) return random(x) + n - 1;
#ifdef TARGET_ZCODE;
   print "** random range out of range^";
   return 1;
#endif;
#ifdef TARGET_GLULX;
    while (true) {
      @random 0 x;
      if ((x >= n) && (x <= m)) return x;
    }
#endif;
];
-) replacing "GenerateRandomNumber".

Edited to fix a bug Otis caught.

1 Like