diff options
author | Bardur Arantsson <bardur@scientician.net> | 2015-12-11 08:09:30 +0100 |
---|---|---|
committer | Bardur Arantsson <bardur@scientician.net> | 2015-12-11 08:09:30 +0100 |
commit | 97bcf1bc612d9920390c885b8dcea0b0cda6f246 (patch) | |
tree | f9890fb08cc717fbc8837b58945f32dd64929b45 /src/z-rand.hpp | |
parent | e4b4f4730a2fb39da766892adbf3419bf5e7f48f (diff) |
Migrate z-rand.c to C++
- Include explicitly instead of via angband.h
- Change to regular functions instead of macros.
Diffstat (limited to 'src/z-rand.hpp')
-rw-r--r-- | src/z-rand.hpp | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/z-rand.hpp b/src/z-rand.hpp new file mode 100644 index 00000000..f2e3ce5c --- /dev/null +++ b/src/z-rand.hpp @@ -0,0 +1,67 @@ +#pragma once + +#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 Variables ****/ + + +extern bool_ Rand_quick; +extern u32b Rand_value; +extern u16b Rand_place; +extern u32b Rand_state[RAND_DEG]; + + +/**** Available Functions ****/ + + +void Rand_state_init(u32b seed); +s32b Rand_mod(s32b m); +s16b randnor(int mean, int stand); +s32b damroll(s16b num, s16b sides); +s32b maxroll(s16b num, s16b sides); + +/** + * Evaluate to "true" p percent of the time. + */ +bool magik(s32b p); + +/* + * 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" + */ +s32b rand_int(s32b m); + +/* + * Generate a random long integer X where 1<=X<=M + * Also, "correctly" handle the case of M<=1 + */ +s32b randint(s32b 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) + */ +s32b rand_range(s32b a, s32b b); + +/* + * 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) + */ +s32b rand_spread(s32b a, s32b d); |