Blaubart: Zufallszahl, Wiederholung ausschließen

Beitrag lesen

Tach.

Array.prototype.misch=function() {
var l=this.length,t,zi;
  for(var i=0;i<l;i++) {
   zi=Math.floor(Math.random()*l);
   t=this[zi];
   this[zi]=this[i];
   this[i]=t;
  }
}

  
Diese Art des Mischens liefert dir keine wirklich zufällige Verteilung! Einige der n! möglichen Sequenzen sind mit deiner Vorgehensweise wahrscheinlicher als andere.  
  
Beim richtigen™ Mischen würdest du das Array ebenfalls Schritt für Schritt durchlaufen, dabei aber das aktuelle Element nur mit einem zufällig bestimmten Element tauschen, welches du noch \*nicht\* besucht hast.  

-- 
Once is a mistake, twice is jazz.