我正在尝试将随机数存储在 vector 中,但我希望每个数字都是唯一的。我可以在不使用 unique() 或 random_shuffle() 的情况下使用 for 循环做到这一点吗?
#include <iostream>
#include <vector>
#include <ctime>
using namespace std;
int main()
{
srand(time(NULL));
vector<int> v;
for (unsigned int i = 0; i < 30; i++) {
v.push_back(rand() % 30);
}
for (unsigned int j = 0; j < 30; j++) {
cout << v[j] << endl;
}
return 0;
}
最佳答案
经典Fisher–Yates shuffle也可用于一次直接生成打乱后的 vector
vector<unsigned> v;
for (unsigned i = 0; i < 30; ++i)
{
unsigned j = rand() % (i + 1);
if (j < i)
{
v.push_back(v[j]);
v[j] = i;
}
else
v.push_back(i);
}
关于c++ - vector C++ 中的非重复随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47232384/