|
|
1.1 ! root 1: #ifndef lint ! 2: static char sccsid[] = "@(#)roll.c 4.1 12/24/82"; ! 3: #endif ! 4: ! 5: /* ! 6: * This routine rolls ndie nside-sided dice. ! 7: */ ! 8: ! 9: # define reg register ! 10: ! 11: # ifndef vax ! 12: # define MAXRAND 32767L ! 13: ! 14: roll(ndie, nsides) ! 15: int ndie, nsides; { ! 16: ! 17: reg long tot; ! 18: reg unsigned n, r; ! 19: ! 20: tot = 0; ! 21: n = ndie; ! 22: while (n--) ! 23: tot += rand(); ! 24: return (int) ((tot * (long) nsides) / ((long) MAXRAND + 1)) + ndie; ! 25: } ! 26: ! 27: # else ! 28: ! 29: roll(ndie, nsides) ! 30: reg int ndie, nsides; { ! 31: ! 32: reg int tot, r; ! 33: reg double num_sides; ! 34: ! 35: num_sides = nsides; ! 36: tot = 0; ! 37: while (ndie--) ! 38: tot += (r = rand()) * (num_sides / 0x7fff) + 1; ! 39: return tot; ! 40: } ! 41: # endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.