私はこのコードを使用して、1000000の数字を重複なくランダム化しています。ここに私がこれまで持っているものがあります。効率的な方法で重複のない数字をランダム化
enter code here protected void randomise() {
int[] copy = new int[getArray().length];
// used to indicate if elements have been used
boolean[] used = new boolean[getArray().length];
Arrays.fill(used,false);
for (int index = 0; index < getArray().length; index++) {
int randomIndex;
do {
randomIndex = getRandomIndex();
} while (used[randomIndex]);
copy[index] = getArray()[randomIndex];
used[randomIndex] = true;
}
for (int index = 0; index < getArray().length; index++) {
getArray()[index] = copy[index];
//Checks if elements in array have already been used
}
}
public static void main(String[] args) {
RandomListing count = new SimpleRandomListing(1000000);
//Will choose 1000000 random numbers
System.out.println(Arrays.toString(count.getArray()));
}
この方法は遅すぎます。これがより効率的にどのように行われるか教えてください。私はすべての返答を感謝します。 よろしくお願いします。
どのような種類の乱数が欲しいですか? 0と1000000の間の数字だけ? –
重複なしでより効率的に –
1M要素の配列を作成し、カードをシャッフルしているかのように、要素をちょっとシャッフルします(つまり、2つの乱数を選んで値をシフトします...繰り返しX回数) –