在每次随机shuffle之后,C ++向量以相同的方式随机化

时间:2015-06-15 13:57:57

标签: c++ random vector shuffle

我已经尝试了很多方法来随机化C ++中的向量容器中的项目。虽然每次随机化时项目必须不同。目前它每次吐出相同的随机混洗矢量。

我使用的方法如下:

/////////////////////////////////////////////////
METHOD 1
srand(time(0));
random_shuffle(mapkeys.begin(), mapkeys.end());

METHOD 2
int myrandom (int i) { return std::rand()%i;}
random_shuffle(mapkeys.begin(), mapkeys.end(), myrandom);

METHOD 3
auto engine = default_random_engine{};
shuffle(begin(mapkeys), end(mapkeys), engine);

METHOD 4
default_random_engine gen(unsigned(time (NULL)));
shuffle(begin(mapkeys), end(mapkeys), gen);
/////////////////////////////////////////////////

我在堆栈上的各种问题中找到了这些。虽然我理解需要将种子传递给random_shuffle的概念,但它似乎对我不起作用。如果有人不仅可以指出,而且向我解释会非常感激的错误!

0 个答案:

没有答案