ここで奇妙な状況が発生しました。あなたが私を助けてくれるかもしれないと思いました。1 から 10 までの数値が入力された int 配列があります。この配列から乱数を生成し、別の int 配列に保存したいと考えています。クラス Random を使用して任意の数字を選択し、ランダムに 0 をスローするので、そのように変更します (1 から 10 までの数字をスローします)。
randNum = rand.nextInt(numbers.length-min+1)+min;
次のコードは、同じ乱数を生成する場合、それをスキップすることを確認します。プログラムは実際に動作しており、1 から 10 までのランダムに配置された別の配列を取得しています。それが私が望んでいたことです。しかし、時々私は 1 から 10 までの 1 つの数字を欠いていて、代わりに ZERO を取得しています。どうして??
int[] numbers = {1,2,3,4,5,6,7,8,9,10};
int[] usednum = new int[10];
Random rand = new Random();
int randNum;
int min = 1;
for (int x = 0; x<numbers.length; x++) {
for (int i = 0; i<usednum.length; i++) {
randNum = rand.nextInt(numbers.length-min+1) + min;
for (int f = 0; f<usednum.length; f++) {
if (usednum[f] == randNum) {
break;
} else if (usednum[f] == 0) {
usednum[x] = randNum;
}
}
}
}
for (int c = 0; c<usednum.length; c++) {
System.out.println(usednum[c]);
}