summaryrefslogtreecommitdiff
path: root/src/z-rand.hpp
diff options
context:
space:
mode:
authorBardur Arantsson <bardur@scientician.net>2015-12-11 08:09:30 +0100
committerBardur Arantsson <bardur@scientician.net>2015-12-11 08:09:30 +0100
commit97bcf1bc612d9920390c885b8dcea0b0cda6f246 (patch)
treef9890fb08cc717fbc8837b58945f32dd64929b45 /src/z-rand.hpp
parente4b4f4730a2fb39da766892adbf3419bf5e7f48f (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.hpp67
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);