Все они наследуются от базового класса? Нужно ли использовать шаблоны?
(я имею в виду эти http://www.codeguru.com/cpp/cpp/cpp_mfc/stl/article.php/c15319/)
Я делаю это прямо сейчас:
typedef std::mt19937 RNG;
, а затем
class Chooser {
public:
Chooser(RNG& rng, uint n, uint min_choices, uint max_choices):
Другими словами, я передаю ссылки на ГСЧ. Как мне передать произвольный генератор?
Кроме того, я понимаю, что, возможно, это другой вопрос, но как передать генератор в STL?
std::random_shuffle(choices_.begin(), choices_.end(), rng);
не похоже на работу.
решение прохождения генератора:
typedef std::ranlux64_base_01 RNG;
typedef std::mt19937 RNGInt;
решение о переходе на STL:
struct STL_RNG {
STL_RNG(RNGInt& rng): gen(rng) {}
RNGInt& gen;
int operator()(int n) { return std::uniform_int<int>(0, n)(gen); }
};