summaryrefslogtreecommitdiff
path: root/src/common/random.hpp
diff options
context:
space:
mode:
authorBen Longbons <b.r.longbons@gmail.com>2014-03-15 19:34:59 -0700
committerBen Longbons <b.r.longbons@gmail.com>2014-03-16 18:58:48 -0700
commitc812c92d1a1835f0bda783e709481188c8d92225 (patch)
treeb401ede48a088ad1aaed88fe3b997cd26ff7ae08 /src/common/random.hpp
parentde9ee1b9754af9d954487121947352f32d7ebb7e (diff)
downloadtmwa-c812c92d1a1835f0bda783e709481188c8d92225.tar.gz
tmwa-c812c92d1a1835f0bda783e709481188c8d92225.tar.bz2
tmwa-c812c92d1a1835f0bda783e709481188c8d92225.tar.xz
tmwa-c812c92d1a1835f0bda783e709481188c8d92225.zip
Clean up header organization
Diffstat (limited to 'src/common/random.hpp')
-rw-r--r--src/common/random.hpp69
1 files changed, 0 insertions, 69 deletions
diff --git a/src/common/random.hpp b/src/common/random.hpp
deleted file mode 100644
index a694cce..0000000
--- a/src/common/random.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-#ifndef RANDOM_HPP
-#define RANDOM_HPP
-
-# include "random.t.hpp"
-
-# include "../sanity.hpp"
-
-# include <random>
-
-// This is not namespace random since that collides with a C function,
-// but this can be revisited when everything goes into namespace tmwa.
-namespace random_
-{
- /// Get a random number from 0 .. 2**32 - 1
- extern std::mt19937 generate;
-
- /// Get a random number from 0 .. bound - 1
- inline
- int to(int bound)
- {
- std::uniform_int_distribution<int> dist(0, bound - 1);
- return dist(generate);
- }
-
- /// Get a random number from low .. high (inclusive!)
- inline
- int in(int low, int high)
- {
- std::uniform_int_distribution<int> dist(low, high);
- return dist(generate);
- }
-
- inline
- bool coin()
- {
- // sigh, can't specify <bool> directly ...
- std::uniform_int_distribution<int> dist(false, true);
- return dist(generate);
- }
-
- inline
- bool chance(Fraction f)
- {
- if (f.num <= 0)
- return false;
- if (f.num >= f.den)
- return true;
- return random_::to(f.den) < f.num;
- }
-
- // C is usually one of:
- // std::vector<T>
- // std::initializer_list<T>
- // std::array<T, n>
- template<class C>
- auto choice(C&& c) -> decltype(*c.begin())
- {
- return *(c.begin() + random_::to(c.size()));
- }
-
- // allow bare braces
- template<class T>
- T choice(std::initializer_list<T>&& il)
- {
- return random_::choice(il);
- }
-} // namespace random_
-
-#endif // RANDOM_HPP