2012-02-23 13 views
2

0から20の間の21の値を持つ配列を作成したいと思います。それらをランダムに、同時に繰り返さないようにしたいと思います。反復されないrand番号の配列を作成する方法

私は20

0 + rand()/(RAND_MAX/(20-0+1)+1) 

に0の間の乱数を作成する方法を知っているが、私はそれはあなたが前の番号に

+2

ヒント:0から20までの連続した値を持つ配列を作成し、それをシャッフルすると、これは各要素の一意性を保証する。 –

答えて

5

を比較繰り返されないように、これらの数字を作成する方法がわかりませんおそらくのようなものを使用したいと考えています。

+0

すごい..ありがとうalot ... – lakesh

2

これは、必要以上に難しくなっているようです。なぜ1から20までの数字の配列を作成し、それをシャッフルでランダム化しないのですか?

0

サイズが20になるまで、Set<Integer>を使用してランを追加し、次に配列にダンプします。

パフォーマンスが必要な場合は、GuavaのHashSetまたはTroveのTIntSetを使用します。

0

私は実際には@ Oliのansを参照して0から20までの値を持つ2次元配列を作成していました。私は答えを書いた:

int arr[2][6] = {{0,1,2,3,4,5,6}, {7,8,9,10,11,12,13},{14,15,16,17,18,19,20}}; 
void rearrange_num(int *p) 
{ 
    int temp = 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; 
    } 
    } 
} 
関連する問題