summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/random.cc12
1 files changed, 7 insertions, 5 deletions
diff --git a/crawl-ref/source/random.cc b/crawl-ref/source/random.cc
index d121c2002b..ec1cb2bb42 100644
--- a/crawl-ref/source/random.cc
+++ b/crawl-ref/source/random.cc
@@ -91,20 +91,22 @@ int random_choose_weighted(int weight, int first, ...)
return (chosen);
}
+#define UINT32_MAX ((uint32_t)(-1))
+
int random2(int max)
{
if (max <= 1)
return (0);
- unsigned long partn = 0xFFFFFFFFUL / max;
+ uint32_t partn = UINT32_MAX / max;
while (true)
{
- unsigned long bits = random_int();
- unsigned long val = bits / partn;
+ uint32_t bits = random_int();
+ uint32_t val = bits / partn;
- if (val < (unsigned long)(max))
- return val;
+ if (val < (uint32_t)max)
+ return ((int)val);
}
}