2016-12-08 5 views
0

forループを使用して重複なしで0-5(Row、Col)からランダム座標を生成したいとします。基本的に、数字(3,2)、(3,4)、(1,4)、(3,4)が生成された場合、(3,4)は利用されず、新たなランダムセットが検索される。2つの乱数を重複のない配列にロードする

これらは私は、[1] [0]とshootP shootPの値を読み取る別の方法を持っていたいshootP []

int[] shootP = new int[2]; 

public static int shootRowP(int[] shootP) 
{ 
    Random rn = new Random(); 
    shootP[0] = rn.nextInt(5)+1;//loads into ROW 
    System.out.print("Row:"+(shootP[0])); 
    return shootP[0]--; 
} 

public static int shootColP(int[] shootP,int[][]boardP) 
{ 
    Random rn = new Random(); 
    shootP[1] = rn.nextInt(5)+1;//loads into Col 
    System.out.print(" Column:"+(shootP[1])+"/n"); 
    return shootP[1]--; 
} 

アレイに2個の乱数と負荷それらを生成する方法でありますそれらの値がすでに使用されているかどうかを確認してください。助言がありますか?

+0

Eclipseは使用している開発環境です。プログラミング言語ではありません。この質問は、Eclipseの使用とは関係ありません。 –

答えて

0

可能な座標(X、Y)の数がそれほど大きくないので、まずすべての可能な座標のリストを作成します。次に、ランダムピックごとに、このリスト内のランダムな要素(つまり、rn.nextInt(current_list_length))を選択し、リストから要素を削除して返します。

注:

  • あなたはリストが
  • 空になったとき(例外?)あなたはまた、初期化時に、各ドローであなたのリストをシャッフルすることができ、あなたが選んで、最初(または最後を削除する何かをする必要があります)要素。たとえば、配列をシャッフルする方法についてはhereを参照してください。
  • リストの代わりに、スタック(配列+要素カウンタ)がトリックを行うことができます。
関連する問題