|
|
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.