# Wie "zufällig" ist Collections.shuffle(.)



## Se7enDays (5. Apr 2008)

Hallo,

ich habe hier ein Integer-Array, welches ich mit Collections.shuffle(...) durchmische. Dies geschieht zwar, jedoch scheinen mir die Objekte bei Tests nicht immer total durchgemischt zu sein. War das jetzt nur Zufall oder gibt es bessere Möglichkeiten die Integer/Objekte zu durchmischen?


----------



## Marco13 (5. Apr 2008)

Aus der Collections.java doku:
_
   * This algorithm would result in a perfectly fair shuffle (that is, each
   * element would have an equal chance of ending up in any position) if r were
   * a perfect source of randomness. In practice the results are merely very
   * close to perfect.
_

Es KANN natürlich sein, dass die Liste nach einem Aufruf von "shuffle" noch genauso aussieht, wie vorher. Besonders bei einer Einelementigen Liste ist das erschreckend häufig der Fall. Aber letztendlich ist das reiner Zufall. Dieser Zufall wird auch beim rautavistischen Sortierverfahren "RandomSort" ausgenutzt:

```
void randomSort(list)
{
    while (!isSorted(list)) shuffle(list);
}
```
Dieser Algorithmus wird im Skript "Algorithmen und Datenstrukturen"  der RU Eschweilerhof näher beschrieben.


----------

