Я хочу создать 500000 уникальных случайных целых чисел в диапазоне от 1 до миллиона. Номера должны быть уникальными, и я хочу его в atleast линейного времени и без использования так много памяти. Может ли кто-нибудь подумать о решении?Создание полмиллиона уникальных целых чисел в java
0
A
ответ
1
Как и раньше, вы можете перетасовать цифры и вытащить первую половину, чтобы они были уникальными. Это линейно, так как перетасовка равна O(n)
, а первая часть - O(n/2)
.
Заявка является модифицированной реализацией этой темы. Это будет печатать 500k уникальных случайных чисел из диапазона 1-1m.
import java.util.ArrayList;
import java.util.Collections;
public class UniqueRandomNumbers {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i=1; i<1000001; i++) {
list.add(new Integer(i)); // adding all the numbers between 1-1m to a list.
}
Collections.shuffle(list); // using the built in shuffle function to make the unique order
for (int i=0; i<500000; i++) {
System.out.println(list.get(i)); // printing the first 500k. Replace this with whatever you want to do with those numbers.
//Notice - since it might take a while, it might be worth it to let the user know of the progress.
}
}
}
1
Если память на премию, использовать растровое изображение, чтобы вспомнить, какой из миллиона были выбраны, а затем повторно выбрать случайное число и остановка после 500.000. Это в основном оптимальное хранилище, так как lg (1e6 выбирает 0.5e6) не намного меньше 1e6.
Смежные вопросы
- 1. Java-массив уникальных случайных целых чисел
- 2. Java Boolean для проверки уникальных целых чисел
- 3. Создание уникальных случайных чисел эффективно в Java
- 4. Создание триплетов целых чисел
- 5. Создание уникальных случайных чисел
- 6. Создание уникальных случайных чисел
- 7. Создание уникальных случайных чисел
- 8. {Python} Создание уникальных целых чисел с использованием итерации
- 9. Создание уникальных целых чисел/float из миллиона коротких строк
- 10. C - Создание двух процессов, которые получают 50 уникальных целых чисел
- 11. Получение случайных уникальных целых чисел в C++
- 12. Перестановки целых чисел в Java
- 13. Создание массива целых чисел
- 14. Сжатие возрастающей последовательности уникальных целых чисел
- 15. Хороший способ хранения уникальных целых чисел
- 16. Эффективное создание уникальных случайных чисел
- 17. Сравнения Целых чисел в Java
- 18. Мигание целых чисел в Java
- 19. «Округление» целых чисел в Java
- 20. Создание уникальных случайных чисел в Livecode
- 21. Какая структура данных Delphi может содержать список уникальных целых чисел?
- 22. Создание инкрементирующего набора символов (или целых чисел) в Java
- 23. Создание образца целых чисел в Rcpp
- 24. Создание массива целых чисел в iOS
- 25. Создание целых чисел в OCaml без рекурсии
- 26. Создание массива целых чисел в LLVM
- 27. Создайте 10 уникальных целых чисел в C# для Unity
- 28. NumPy - выберите случайный список уникальных целых чисел в диапазоне
- 29. Сколько байтов уникальных целых чисел делают OID в postgresql?
- 30. Java DecimalFormat - Использование целых чисел
проверить это http://stackoverflow.com/questions/8115722/generating-unique-random-numbers-in-java – Radi