• ベストアンサー

ランダム

次のプログラムで同じ数字を出ないようにするにはどうすれば良いでしょうか。 import java.util.*; class RandomNum { public static void main(String args[]) { Random numRandom = new Random(); for (int i = 1; i <= 5; i++) { System.out.println(numRandom.nextInt(10)); } } }

質問者が選んだベストアンサー

  • ベストアンサー
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

Randomクラスにはそのような機能はなさそうです。 従って、自分でなんとかする必要がありそうです。 「同じ数字がでない」ということは、以前にどんな数字が出たのかを 把握しておく必要があります。 配列に、出た数字を保存しておき、毎回それをチェックし、 その中になければ出力するようにしましょう。 *次のコードは、全角スペースを使っているので、そのままコピペしてもダメです。 import java.util.*; class RandomNum {   final static int NUM = 5;  static int  count;  static int[] numList;  public static void main(String args[]) {    numList = new int[NUM];   count = 0;   Random numRandom = new Random();   while(count < NUM){    int n = numRandom.nextInt(10);    /* 今回の数字が出力済みかチェックし、      未出力なら出力済みリストへ追加後、出力     */    if(!checkNum(n)){     addNum(n);     System.out.println(n);    }   }  }  /* 指定された数字が出力済みかチェックする   * @return 出力ずみならtrue   */  private static boolean check(int n){   for(int i = 0 ; i < NUM ; i++){    if(numList[i] == n){     return(true);    }   }   return(false);  }  /* 指定された数字を出力済みリストに登録する   */  private static void add(int n){   numList[count] = n;   count++;  } }