3 #ifndef INCLUDED_Z_RAND_H
4 #define INCLUDED_Z_RAND_H
10 /**** Available constants ****/
14 * Random Number Generator -- Degree of "complex" RNG -- see "misc.c"
15 * This value is hard-coded at 63 for a wide variety of reasons.
22 /**** Available macros ****/
26 * Generates a random long integer X where O<=X<M.
27 * The integer X falls along a uniform distribution.
28 * For example, if M is 100, you get "percentile dice"
34 * Generates a random long integer X where A<=X<=B
35 * The integer X falls along a uniform distribution.
36 * Note: rand_range(0,N-1) == rand_int(N)
38 #define rand_range(A,B) \
39 ((A) + (rand_int(1+(B)-(A))))
42 * Generate a random long integer X where A-D<=X<=A+D
43 * The integer X falls along a uniform distribution.
44 * Note: rand_spread(A,D) == rand_range(A-D,A+D)
46 #define rand_spread(A,D) \
47 ((A) + (rand_int(1+(D)+(D))) - (D))
51 * Generate a random long integer X where 1<=X<=M
52 * Also, "correctly" handle the case of M<=1
59 * Evaluate to TRUE "P" percent of the time
69 * Evaluate to TRUE "S" percent of the time
71 #define saving_throw(S) \
75 /**** Available Variables ****/
77 extern bool Rand_quick;
78 extern u32b Rand_value;
79 extern u16b Rand_place;
80 extern u32b Rand_state[RAND_DEG];
83 /**** Available Functions ****/
85 extern void Rand_state_init(u32b seed);
86 extern s32b Rand_mod(s32b m);
87 extern s32b Rand_div(u32b m);
88 extern s16b randnor(int mean, int stand);
89 extern s16b damroll(int num, int sides);
90 extern s16b maxroll(int num, int sides);