for (int x = 0 ; x < chosenQ.length ; x++)
{
chosenQ [x] = r.nextInt (9);
c.println (chosenQ [x]);
}
これは、0と9の間に5のintを生成します。それを生成するときに重複するintを持たないようにするにはどうすればよいですか?重複するランダムintを防ぐ方法
for (int x = 0 ; x < chosenQ.length ; x++)
{
chosenQ [x] = r.nextInt (9);
c.println (chosenQ [x]);
}
これは、0と9の間に5のintを生成します。それを生成するときに重複するintを持たないようにするにはどうすればよいですか?重複するランダムintを防ぐ方法
すでに選択されている番号を記録しておく必要があります。
これを行う方法の1つは、すべての値がfalse
に初期化されているブール値配列に値を格納することです。ランダム値が生成されると、そのインデックスの要素はtrue
に設定されます。次に、生成された番号ごとに、そのインデックスの要素がtrue
またはfalse
であるかどうかを確認するだけです。
例えば、
// array of booleans initialized to false
boolean[] array = new boolean[chosenQ.length];
for (int x = 0 ; x < chosenQ.length ; x++)
{
int i = r.nextInt(9);
// check if value was chosen already
while (array[i] == true)
i = r.nextInt(9);
// set generated value's index in array to true
array[i] = true;
chosenQ[x] = i;
c.println(chosenQ[x]);
}
を取るシャッフル
array = [0, 1, ..., 9]
array.shuffle.take(5)
この質問に「javascript」とタグ付けされています...「java」にする必要があります。 – quarterpi
可能な値の小さなセットであり、これらの値を繰り返しなくしたい場合は、すべての可能な値の配列を作成し、シャッフルして最初のn *(5)*値を取る。 – Thomas