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