2014-03-02 82 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