它们是否都从基类继承?我必须使用模板吗?如何将C++ 11随机数生成器传递给函数?
(我指的是这些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):
换句话说,我通过引用RNG 。我将如何通过一个任意的发电机?
此外,我意识到这可能是一个不同的问题,但我如何将发生器传递给STL?
似乎没有工作。
解决方案,通过发电机:
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); }
};
根据那篇文章,他们已经是仿函数,所以你应该准备好去。有什么问题? – Potatoswatter 2010-02-11 00:26:02
如果我们知道您的目标,我们可能会提供更具体和有用的信息。 – GManNickG 2010-02-11 00:27:37
具体来说,你希望你的生成器是不同的,你得到的'random_shuffle'编译器错误是什么? – Potatoswatter 2010-02-11 00:44:00