Daniel Thoma: die Array-Methode [shuffle]

Beitrag lesen

Hallo JürgenB,

das kann ich nicht bestätigen. Ein schneller Test im IE und im FF zeigt, dass der Algorithmus funktioniert und allenfalls etwas langsamer ist.

Klar, wenn man Glück hat, führt das dazu, dass jedes Element an eine zufällige Stelle getauscht wird. Die Betonung liegt eben auf "wenn man Glück hat".
Nun mag es im Web-Umfeld generell üblich sein, dass man sich darauf verlässt, dass man Glück hat, aber im Allgemeinen ist das keine empfehlenswerte Entwicklungsstrategie.
Mir ist klar, dass da normalerweise irgend ein durchmischen passiert. (Hast Du mal überprüft, wie gleichverteilt die erzeugten Permutationen wirklich sind?).
Der entscheidende Punkt ist, dass man die Spezifikation der sort-Funktion verletzt, indem man einen ungültigen Vergleich verletzt.
Für einen Vergleich müssen eben ein paar Eigenschaften gelten wie a < b --> !(b <= a), a < b & b < c --> a < c, a < b | b <= b. Die erfüllt Random nicht. Da man auch noch mit vielen Implementierungen zu tun hat, die sich auch beliebig ändern können, kann man sich überhaupt nicht darauf verlassen, dass man das mal ausprobiert hat.
Als "kriminell" hab ich das nicht bezeichnet, weil es nicht in gängigen Browsern funktionieren würde (das tut es ja, klar), sondern weil solche Spezifikationsverletzung eine äußerst unsaubere und gefährliche Art ist zu programmieren. Solche Hacks sollte man tunlichst vermeiden, wenn man an zuverlässiger Software interessiert ist, auch wenn es bei Web-Javascript-Basteleien da nicht so drauf ankommen mag.

Grüße

Daniel