2016-05-25 10 views
2

私は225個の要素と15個のより小さい配列の長さの合計が正確に225である配列を持っています。ランダムな方法で配列を小さな配列で塗りつぶすにはどうすればいいですか?

重要なのは、これらの小さな配列ではなくランダムな方法で大きな配列を塗りつぶす必要があるということです。

private final short datosdeNivel[]= new short[225]; 
private final short diecinueve[]= {19, 19}; 
private final short veintiseis[]= {26, 26, 26}; 
private final short dieciocho[]= {18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18}; 
private final short veintidos[]= {22, 22}; 
private final short veintiuno[]={21, 21, 21, 21, 21, 21, 21, 21, 21, 21}; 
private final short cero[]= {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 
private final short diecisiete[]= {17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17}; 
private final short dieciseis[]= {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,16, 16, 16, 16, 16, 16, 16, 16, 16, 16,16, 16, 16, 16, 16, 16, 16, 16, 16, 16,16, 16, 16, 16, 16, 16, 16, 16, 16, 16,16, 16, 16, 16, 16, 16, 16, 16, 16, 16,16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}; 
private final short veinte[]= {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20}; 
private final short veinticuatro[]= {24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24}; 
private final short veinticinco[]= {25, 25, 25, 25}; 
private final short veintiocho[]= {28, 28}; 
private final short uno[]= {1, 1, 1, 1, 1, 1, 1}; 
private final short nueve[]= {1}; 
private final short ocho[]= {9, 9, 9, 9, 9, 9, 9, 9, 9}; 

ランダム配列を設定すると、プログラムが実行されるたびに、より小さな配列が大きな配列に配置される順序が異なりますか?

これがために、それを埋めるための方法だろう。

int aux; 

     aux= diecinueve.length; 

     for(int i=0; i<diecinueve.length; i++) 
     { 
      datosdeNivel[i]= diecinueve[i]; 
     } 
     for(int i=0; i<veintiseis.length; i++) 
     { 
      datosdeNivel[aux]= veintiseis[i]; 
      aux++; 
     } 
     for(int i=0; i<dieciocho.length; i++) 
     { 
      datosdeNivel[aux]= dieciocho[i]; 
      aux++; 
     } 
     for(int i=0; i<veintidos.length; i++) 
     { 
      datosdeNivel[aux]= veintidos[i]; 
      aux++; 
     } 
     for(int i=0; i<veintiuno.length; i++) 
     { 
      datosdeNivel[aux]= veintiuno[i]; 
      aux++; 
     } 
     for(int i=0; i<cero.length; i++) 
     { 
      datosdeNivel[aux]= cero[i]; 
      aux++; 
     } 
     for(int i=0; i<diecisiete.length; i++) 
     { 
      datosdeNivel[aux]= diecisiete[i]; 
      aux++; 
     } 
     for(int i=0; i<dieciseis.length; i++) 
     { 
      datosdeNivel[aux]= dieciseis[i]; 
      aux++; 
     } 
     for(int i=0; i<veinte.length; i++) 
     { 
      datosdeNivel[aux]= veinte[i]; 
      aux++; 
     } 
     for(int i=0; i<veinticuatro.length; i++) 
     { 
      datosdeNivel[aux]= veinticuatro[i]; 
      aux++; 
     } 
     for(int i=0; i<veinticinco.length; i++) 
     { 
      datosdeNivel[aux]= veinticinco[i]; 
      aux++; 
     } 
     for(int i=0; i<veintiocho.length; i++) 
     { 
      datosdeNivel[aux]= veintiocho[i]; 
      aux++; 
     } 
     for(int i=0; i<uno.length; i++) 
     { 
      datosdeNivel[aux]= uno[i]; 
      aux++; 
     } 
     for(int i=0; i<nueve.length; i++) 
     { 
      datosdeNivel[aux]= nueve[i]; 
      aux++; 
     } 
     for(int i=0; i<ocho.length; i++) 
     { 
      datosdeNivel[aux]= ocho[i]; 
      aux++; 
     } 
+0

これらの配列を保持するためにもう一方の配列を作成しようとしたコードがありますか?もしそうなら、ここで編集して投稿してください。 –

+1

それは明らかではありません。ランダムに配列を追加するだけでなく、すべての配列の値を追加するだけです。 – UDKOX

+0

あなたの最終目標は何ですか? – cyroxis

答えて

1

あなたは、ArrayListを作成あなたの小さなアレイの全てを含む試みることができる:

ArrayList<short[]> arrays = new ArrayList<>(); 
arrays.add(ocho); 
arrays.add(veintiocho); 
// ... 

、その後は、リストから、あなたの大きな配列に追加するたびに削除する、ランダムインデックスにアクセス:

Random rand = new Random(); 
while (!arrays.isEmpty()) { 
    int index = rand.nextInt(array.size()); 
    short[] s = arrays.get(index); 

    for(int i = 0; i < s.length; i++) 
    { 
     datosdeNivel[aux]= s[i]; 
     aux++; 
    } 

    arrays.remove(index); 
}   

これは、各アレイを大きな配列にランダムな順序で追加します。擬似コードで

0

私があなただったら、私は、これらのインデックスのバケツを作る、その後、各配列にインデックスを与え、その後ランダムにインデックスを拾いますよバケットからコピージョブを実行し、この使用インデックスをバケットから削除します。

1

  • 各アレイの要素を最終アレイを充填、リスト上Collections.shuffle(list)
  • 反復を使用してリストをシャッフルリスト
  • にアレイを入れ
関連する問題