У меня есть 1000 уникальных объектов в java.util.List
, каждый из которых относится к изображению, каждое изображение в списке 1000 уникально, и теперь я хотел бы перетасовать их, чтобы я мог использовать первые 20 объектов и представить их на веб-сайте. пользователь. Затем пользователь может нажать кнопку с надписью «Перемешать», и я снова извлеку 1000 изображений с нуля и снова вызову shuffle()
. Тем не менее, кажется, что из 1000 объектов изображения я очень часто вижу одно и то же изображение снова и снова между 20 выборками изображений.
Кажется, что-то не так, какие-нибудь лучшие предложения, советы?
Мой код очень прост:
List<String> imagePaths = get1000Images();
Collections.shuffle(imagePaths);
int i = 0;
for (String path: imagePaths) {
... do something with the path ...
i++;
if (i >= 20) break;
}
Я знаю, что Collections.shuffle()
хорошо распространяется: см., например, http://blog.ryanrampersad.com/2012/03/03/more-on-shuffling-an-array-correctly/
Однако у меня просто есть ощущение, что вероятность увидеть одно и то же изображение снова и снова в наборе из 20 изображений из 1000 должно быть намного меньше...
Вклады высоко оценены.
Random
реализацию? - person Tomasz Nurkiewicz   schedule 14.03.2012Random
дляshuffle
, если только у вас нет сильного источника случайныхseed
. В противном случае повторно используйте тот же самый. МожетSecureRandom
с хорошим сидом? - person Tomasz Nurkiewicz   schedule 14.03.2012