【发布时间】:2016-09-20 23:20:18
【问题描述】:
我有这样的随机索引功能:
size_t randomIndex(vector<int>myVector) {
srand(time(NULL));
size_t index1 = rand() % myVector.size();
return index1;
}
我在另一个函数中调用它:
void generaTwoIndex(vector<int> myVector2) {
size_t index1 = randomIndex(myVector2);
cout << "index1 = " << index1 << endl;
size_t index2 = randomIndex(myVector2);
cout << "index2 = " << index2 << endl;
}
它为我生成了相同的索引。问题是什么? 提前感谢您的回答。
【问题讨论】:
-
有什么问题?您太快调用
srand(time(NULL));,这很可能导致相同的种子(因为秒数不会改变 - 尽管即使这样做也是错误的)。我的建议是在您的main()中播种 1 次。 -
不!它不会在循环中调用它。在第二个函数中,我想使用第一个函数随机生成两个不同的索引。
-
不!它不会在循环中调用它。但原因相同。
-
不一样的想法。就我而言,我不使用循环 stackoverflow.com/users/1413395/…
-
不一样的想法。是的。将您的案例想象成展开一个大小为 2 的循环。话虽如此,请阅读下面的答案。他们都解释了原因。