Thread shuffle in Schleife laufen lassen (15 answers)
Opened by qwe123qwe at 2014-12-27 17:42

Raubtier
 2015-01-03 11:31
#179032 #179032
User since
2012-05-04
1054 Artikel
BenutzerIn

user image
Gucken wir doch einmal nach, wie das aktuell implementiert ist.

Zeilen 873--878 aus der ListUtil.xs sind die interessanten:
Code: (dl )
1
2
3
4
5
6
    for (index = items ; index > 1 ; ) {
int swap = (int)(Drand01() * (double)(index--));
SV *tmp = ST(swap);
ST(swap) = ST(index);
ST(index) = tmp;
}

Das sieht nach Fischer-Yates aus.

Ich sehe also kein Problem in dem shuffle aus List::Util.

Hast du mal ein Beispiel, wenn das Mischen fehlschlägt? Ich würde mal (natürlich nur zum Testen!) srand festsetzen, sodass es reproduzierbar wird. Ansonsten wäre ich sehr vorsichtig mit Gefühlen, dass etwas nicht richtig gemischt ist.
Last edited: 2015-01-03 11:33:08 +0100 (CET)

View full thread shuffle in Schleife laufen lassen