它們是否都從基類繼承?我必須使用模板嗎?如何將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