summaryrefslogtreecommitdiff
path: root/src/common/random2.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/random2.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/random2.hpp')
-rw-r--r--src/common/random2.hpp74
1 files changed, 0 insertions, 74 deletions
diff --git a/src/common/random2.hpp b/src/common/random2.hpp
deleted file mode 100644
index 86deddf..0000000
--- a/src/common/random2.hpp
+++ /dev/null
@@ -1,74 +0,0 @@
-#ifndef RANDOM2_HPP
-#define RANDOM2_HPP
-
-# include "random.hpp"
-# include "utils2.hpp"
-
-# include <algorithm>
-
-namespace random_
-{
- namespace detail
- {
- struct RandomIterator
- {
- int bound;
- int current;
- bool frist;
-
- void operator ++()
- {
- frist = false;
- // TODO: reimplement in terms of LFSRs, so that certain
- // blockage patterns don't favor adjacent cells.
- current = current + 1;
- if (current == bound)
- current = 0;
- }
- int operator *()
- {
- return current;
- }
- };
-
- inline
- bool operator == (RandomIterator l, RandomIterator r)
- {
- return l.current == r.current && l.frist == r.frist;
- }
-
- inline
- bool operator != (RandomIterator l, RandomIterator r)
- {
- return !(l == r);
- }
- }
-
- /// Yield every cell from 0 .. bound - 1 in some order.
- /// The starting position is random, but not the order itself.
- ///
- /// Expected usage:
- /// for (int i : random_::iterator(vec.size()))
- /// if (vec[i].okay())
- /// return frob(vec[i]);
- inline
- IteratorPair<detail::RandomIterator> iterator(int bound)
- {
- int current = random_::to(bound);
- return
- {
- detail::RandomIterator{bound, current, true},
- detail::RandomIterator{bound, current, false}
- };
- }
-
- /// similar to std::random_shuffle(c.begin(), c.end()), but guaranteed
- /// to use a good source of randomness.
- template<class C>
- void shuffle(C&& c)
- {
- std::random_shuffle(c.begin(), c.end(), random_::to);
- }
-} // namespace random_
-
-#endif // RANDOM2_HPP