2012-02-26 165 views
0

我有一個數字在0到20之間的2維數組(3x7)。我想隨機更改位置,因此它隨機重新排列。但似乎每次運行它都有相同的位置。創建隨機數

int arr[numRows][numCols] = {{0,1,2,3,4,5,6},{7,8,9,10,11,12,13},{14,15,16,17,18,19,20}}; 
random_rearrange_num(arr); 
void random_rearrange_num(int p[][numCols]) 
{ 
    int temp = 0,k= 0,l = 0; 
    for(int i = numRows -1 ; i > 0 ; i--) 
    { 
    for (int j = numCols-1;j>0; j--) 
    { 
      k = 0 + rand()/(RAND_MAX/(2-0+1)+1); 
      l= 0 + rand()/(RAND_MAX/(6-0+1)+1); 
      temp = p[i][j]; 
      p[i][j] = p[k][l]; 
      p[k][l] = temp; 
    } 
    } 
} 

我已經展示了問題中的必要部分。完整的代碼是在這裏:https://codereview.stackexchange.com/questions/9419/programming-of-3-x-7-trick

例如:它總是加載了這個第一enter image description here

二是這樣的:

enter image description here

每次我重新啓動,號碼在同一位置。我如何改變它?

回答

5

你應該先初始化srand()

種子種子是一種常見的方式:

srand (time(NULL)); 
+0

我在哪裏可以添加此? – lakesh 2012-02-26 08:51:02

+0

@lakesh:在第一個'rand()'之前 - 而不是在循環中。在你的示例中,我會在[int temp = 0,k = 0,l = 0;',或者甚至在函數調用之前[在main()]中完成它。注意你還需要包含'time.h' – amit 2012-02-26 08:52:11

+0

我需要任何lib函數嗎? – lakesh 2012-02-26 08:54:19