Hallo Struppi,
Array.prototype.shuffle = (function () {
this.sort(function () {
return (0.5 - Math.random());
});
});
Die war hier auch schon im Gespräch, sie zwar absolut elegant aber auch extrem langsam.
Sie ist nicht elegant sonder kriminell...
Sort setzt voraus, dass die übergebene Funktion eine Ordnung realisiert, das ist bei Random aber natürlich nicht der Fall. Damit hat man keinerlei Aussage mehr darüber, was das tut, noch nicht mal, dass es überhaupt terminiert.
Eine Gleichverteilung kommt auch höchstens dann zustande, wenn das dazu führt, dass der eingesetzte Algorithmus so lange auf dem Array rumeiert, dass da eine Gleichverteilung zustande kommt, unabhängig davon, was er genau tut.
Grüße
Daniel