我创建了一个矢量矢量或大小为n x n的二维数组。我想为这个向量的每个位置分配一些n-2值,即例如grid [1] [2] = 3,并且值3对于仅向量网格[1] [2]中的其他位置不应该相同应该具有值3。 任何人都可以帮助我代码,我们也可以使用srand函数来做到这一点吗? 谢谢
答案 0 :(得分:0)
假设您对生成的随机数没有任何限制,这里有一个填充然后打印2D矢量数组的示例:
int n = 3;
std::vector<int> usedNumbers(n*n);
std::vector<std::vector<int>> vec(n);
for (int i = 0; i < n; i++)
{
vec[i].resize(n);
for (int j = 0; j < n; j++)
{
int randNum;
while (std::find(usedNumbers.begin(), usedNumbers.end(), randNum = rand()) != usedNumbers.end()){}
usedNumbers.push_back(randNum);
vec[i][j] = randNum;
}
}
// print the 2 dimentional vector
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
std::cout << "i:" << i << " j:" << j << " vec: " << vec[i][j] << std::endl;
此参考代码还假设随机数在整个2D阵列中应该是唯一的。
你可以使用rand()函数来反映你想要的最大数量(例如,随机数x应该在0&lt; x&lt; n的范围内),但更好的选择是使用{ {3}}