Est Collections.shuffle() vraiment suffisamment aléatoire? Des exemples pratiques semblent rejeter cette déclaration

J'ai 1000 objets uniques dans un java.util.List, chacun se référant à une image, chaque image dans le 1000-liste est unique et maintenant, je tiens à les mélanger, de sorte que je peux utiliser les 20 premiers objets et de les présenter sur le site web de l'utilisateur.
L'utilisateur peut alors cliquer sur un bouton disant "Shuffle", et j'ai récupérer les 1000 images de nouveau à partir de zéro et d'appeler de nouveau shuffle().
Cependant, il semble que de 1000 objets de l'image, j'ai très souvent de voir la même image, encore et encore, entre le 20-image-sélections.

Quelque chose semble incorrect, une meilleure suggestion, des conseils?

Mon code est très simple:

List<String> imagePaths = get1000Images();
Collections.shuffle(imagePaths);

int i = 0;
for (String path: imagePaths) {
  ... do something with the path ...
  i++;
  if (i >= 20) break;
}

Je sais que Collections.shuffle() est bien distribué:
voir, par exemple, http://blog.ryanrampersad.com/2012/03/03/more-on-shuffling-an-array-correctly/

Cependant, j'ai juste le sentiment que la probabilité de voir la même image, encore et encore dans une série de 20 images de 1000 devrait être beaucoup moins...

Entrées très apprécié.

Sans y voir une analyse statistique de ce que vous voyez, il est difficile de savoir si ses anormale.
Mon suppose que, c'est que vous avez réellement obtenu le même chemin de l'image plusieurs fois, ou plusieurs chemins d'image que en fait, ont la même image. Au-delà, il est difficile de dire avec ce peu d'informations...
Jetez un oeil à ma réponse ici, pourrait être utile. Peut-être que vous devriez brancher différents Random mise en œuvre?
pertinent de dilbert
En fait, vous devriez pas créer une nouvelle instance de Random par shuffle, sauf si vous avez une forte source de hasard seed. Sinon, réutiliser le même. Peut-être SecureRandom avec des semences de bonne?

OriginalL'auteur basZero | 2012-03-14