Имея массив чисел, я хочу случайным образом выбрать каждый его индекс со случайным генератором. Какова наилучшая практика случайного генератора, чтобы избежать бесполезных циклов на уже выбранных индексах? До сих пор я использую ArrayList для хранения уже выбранных, но я чувствую, что в конечном итоге этот алгоритм будет иметь много запущенных циклов в конце. Вот такой код:Лучшая практика для случайного генератора Java
Random r = new Random();
ArrayList<Integer> found = new ArrayList<Integer>();
while(notAllPassed){
int prediction = r.nextInt(sizeOfArray);
if(!found.contains(prediction){
found.Add(prediction);
//Do stuff
}
}
1. построить список индексов. 2. Перетасуйте список. –
Чтобы немного рассказать о том, что сказал @MarkoTopolnik (в случае, если это не очевидно). Найдите алгоритм перетасовки. – markbernard
@markbernard Нет необходимости. 'Collections.shuffle()' –