diff options
Diffstat (limited to 'src/z-rand.h')
-rw-r--r-- | src/z-rand.h | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/src/z-rand.h b/src/z-rand.h new file mode 100644 index 00000000..69a531b4 --- /dev/null +++ b/src/z-rand.h @@ -0,0 +1,89 @@ +/* File: z-rand.h */ + +#ifndef INCLUDED_Z_RAND_H +#define INCLUDED_Z_RAND_H + +#include "h-basic.h" + + + +/**** Available constants ****/ + + +/* + * Random Number Generator -- Degree of "complex" RNG -- see "misc.c" + * This value is hard-coded at 63 for a wide variety of reasons. + */ +#define RAND_DEG 63 + + + + +/**** Available macros ****/ + + +/* + * Generates a random long integer X where O<=X<M. + * The integer X falls along a uniform distribution. + * For example, if M is 100, you get "percentile dice" + */ +#define rand_int(M) \ + (Rand_div(M)) + +/* + * Generates a random long integer X where A<=X<=B + * The integer X falls along a uniform distribution. + * Note: rand_range(0,N-1) == rand_int(N) + */ +#define rand_range(A,B) \ + ((A) + (rand_int(1+(B)-(A)))) + +/* + * Generate a random long integer X where A-D<=X<=A+D + * The integer X falls along a uniform distribution. + * Note: rand_spread(A,D) == rand_range(A-D,A+D) + */ +#define rand_spread(A,D) \ + ((A) + (rand_int(1+(D)+(D))) - (D)) + + +/* + * Generate a random long integer X where 1<=X<=M + * Also, "correctly" handle the case of M<=1 + */ +#define randint(M) \ + (rand_int(M) + 1) + + +/* + * Evaluate to TRUE "P" percent of the time + */ +#define magik(P) \ + (rand_int(100) < (P)) + + + + +/**** Available Variables ****/ + + +extern bool Rand_quick; +extern u32b Rand_value; +extern u16b Rand_place; +extern u32b Rand_state[RAND_DEG]; + + +/**** Available Functions ****/ + + +extern void Rand_state_init(u32b seed); +extern s32b Rand_mod(s32b m); +extern s32b Rand_div(s32b m); +extern s16b randnor(int mean, int stand); +extern s32b damroll(s16b num, s16b sides); +extern s32b maxroll(s16b num, s16b sides); + + +#endif + + |