Является ли Collections.shuffle() действительно достаточно случайным? примеры, кажется, отрицают это утверждение

У меня есть 1000 уникальных объектов в java.util.List, каждый из которых ссылается на изображение, каждое изображение в списке 1000 уникально, и теперь Я хотел бы перетасовать их, чтобы я мог использовать первые 20 объектов и представить их пользователю веб-сайта. Затем пользователь может щелкнуть кнопку с надписью «Перемешать», и я снова извлеку 1000 изображений с нуля и снова вызову shuffle(). Тем не менее, кажется, что из 1000 объектов изображения я очень часто вижу одно и то же изображение снова и снова между 20 выборками изображений.

Кажется, что-то не так, есть предложения получше, советы?

Мой код очень прост:

List 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 должно быть намного меньше...

Вклад приветствуется.

9
задан basZero 14 March 2012 в 12:26
поделиться