2014-03-02 85 views
0

我已经创建了向量的矢量或大小为n x n的2d数组。我想为每个位置分配一些n-2值给这个向量,例如grid [1] [2] = 3,并且值3不应该只在向量grid [1] [2]中与其他位置相同。应该有值3. 有人可以帮我用代码,也可以用srand函数来做这个吗? 由于将值分配给向量的向量

+1

你的问题不清楚。你想为你的2D数组中的每个*元素赋值n-2值吗? – unxnut

+0

'srand()'只在有一个随机数时使用,并且实际上不用于分配数字(使用'rand()'),只是为了生成随机数生成器。 – IllusiveBrian

+0

您是否想用从1到n * n的所有数字的随机排列来填充数组,因此从1到n * n的每个数字只能使用一次? – sj0h

回答

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 < x < n之间),但更好的选择是使用random

+0

感谢代码 – user3371989

+0

如果我的回答对您有帮助,请通过接受它(点击空的复选标记)来帮助我。谢谢 :) – Omer