繰り返しのないintの大きな配列からランダムな配列を生成する必要があります。より大きな配列から乱数配列を生成しますか?
たとえば、私は配列a []と1-200の整数を持っています。必要なのは200個の整数からですが、サイズは15です。これを実装できますか?
繰り返しのないintの大きな配列からランダムな配列を生成する必要があります。より大きな配列から乱数配列を生成しますか?
たとえば、私は配列a []と1-200の整数を持っています。必要なのは200個の整数からですが、サイズは15です。これを実装できますか?
Random rnd = new Random();
int[] a = new int[200];
for (int i = 0; i < a.length; i++)
a[i] = i;
int[] r = new int[15];
for (int i = 0; i < r.length; i++) {
int j = rnd.nextInt(a.length - i);
r[i] = a[j];
a[j] = a[a.length - i - 1];
}
これでいいはずです。ランダムから何かをつかむ。あなたがそれをつかんだら、それをaの "最後の"値と置き換えてください。 「最後」の値はa.lengthとiから簡単に導かれます。
Fisher-Yates shuffle。特に、最初の15要素をシャッフルして選択します。
シンプルだけど効果的な...面白かった!! – Navdroid
問題ありません。これはaを変更することを忘れないでください。 – Hounshell