我已经尝试了很多方法来随机化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的概念,但它似乎对我不起作用。如果有人不仅可以指出,而且向我解释会非常感激的错误!