C++ shuffle算法问题
随机序列生成算法,我使用了 random_shuffle 来打乱有序序列,但是每次生成的 序列都是一样的,我也设置了系统时间为种子,但是还是固定序列,我想问问这是怎么回事?求大神们帮忙看看,解释一下。代码如下:
#include <iostream>
#include <vector>
int main()
{
std::srand((unsigned)time(0)); // 这句话没有起作用,我试过用一个固定值或者注释掉这句话,生成的序列都是一样的
std::cout << "system time : " << time(0) << std::endl;
std::vector<int> v;
std::ostream_iterator<int> out_iter(std::cout, " ");
for(int i=0; i<10; ++i)
{
v.push_back(i);
}
std::random_shuffle(v.begin(), v.end());
copy(v.begin(), v.end(), out_iter);
std::cout << "\n";
return 0;
}
运行结果:
第一次运行:
system time : 1487231414
6 0 3 5 7 8 4 1 2 9
Program ended with exit code: 0
第二次运行:
system time : 1487231496
6 0 3 5 7 8 4 1 2 9
Program ended with exit code: 0