Algorithmus Mischen

Über Sortieralgorithmen gibt es Buecher, Vorlesungen und wissenschaftliche 
Abhandlungen. Geht es um den umgekehrten Vorgang -das Mischen- hat man Schwierigkeiten das 
Wort überhaupt zu googeln. 

Folgende einfache Verfahren sind bewährt:
Man kann auf die Idee kommen, zur Sicherheit ein zweites Mal zu mischen. 
Das ist nicht erforderlich, der Algorithmus ist von der Sortierung zu Beginn nicht abhängig. 
Es schadet allerdings auch nicht, der Aufwand bleibt linear.

 
JavaScript Beispiel
 /* Scramble 1 */
 var stapelA= new Array(1,2,3,4); 
 var stapelB= new Array(); 
 for ( ; stapelA.length > 0 ; )
   {
     var zuf= Math.floor(Math.random()*(stapelA.length)); /* zufaellige Karte */
     stapelB.push(stapelA[zuf]);                          /* lege auf Stapel B */
     stapelA[zuf]= stapelA[stapelA.length-1]              /* entferne die Karte aus Stapel A */
     stapelA.pop();
   }

/* Scramble 2 */
 var stapelA= new Array(1,2,3,4); 
 for ( var i= 0; i< stapelA.length ; i++ )
   {
     var zuf= Math.floor(Math.random()*(stapelA.length));     /* zufaellige Karte */     
     stapelA[i] += stapelA[zuf] - (stapelA[zuf]= stapelA[i]); /* tausche */     
   }
 alert (stapelA);

Beispielausgabe