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