std::shuffle不理解
下面是我的函数目的:向vector的对象v中添加480个元素,前100个元素=10,v[99]-v.end()之间的元素都是0;
我的想法是利用shuffle随机打乱v中的元素,来实现地雷的位置随机
程序代码:
void Widget::initVector() { for(int i = 0; i < 480; i++) { if(i < 99) v.push_back(10); else v.push_back(0); } std::random_device rd; std::mt19937 g(rd()); std::shuffle(v.begin(), v.end(), g); }
现在的问题是,这个函数每次的打乱序列都是一样的,如:
可以看到,地雷的位置随机成功了,但是每次运行程序,位置都是一样的。
查询https://zh.中的例子
程序代码:
#include <random> #include <algorithm> #include <iterator> #include <iostream> int main() { std::vector<int> v = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; std::random_device rd; std::mt19937 g(rd()); std::shuffle(v.begin(), v.end(), g); std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " ")); std::cout << "\n"; system("pause"); }
这段示例程序正常,为什么我的每次打乱后的顺序都是一样的?
cppreference上的说明有点看不懂,请帮我看看哪里有问题,还有关于shuffle的使用方法,谢谢!
[此贴子已经被作者于2018-11-19 14:16编辑过]