Mischen eines Arrays

Als ich mich heute mit Javascript beschäftige, stolpere ich über eine Aufgabe, die mir Kopfzerbrechen macht. Wie mische ich ein Array. Als ich so darüber sinniere, kommen mir alle erdenklichen Einfälle. Dann bemühe ich Google und siehe da, die Antwort steht auf der Seite von stackoverflow[EN]. Ich muss den Fisher-Yates Algorithmus gebrauchen. Alles schön ausführlich beschrieben. Nach einem kurzen CopyPaste führe ich den Code aus und alles läuft wie am Schnürchen.

Was ist ein Array?

Nun fragt sich der Leser vielleicht, was ist den eigentlich ein Array. Ich antworte ihm, ein Array ist ein primitiver Datentyp. Was ist den ein Datentyp, fragt er sich da. Ich antworte, ein Datentyp besteht aus einer Informationseinheit, die im RAM unter einer Registrierungsnummer abgelegt wird. Ein Array legt aber nicht nur eine Zahl oder einen Buchstaben ab sonder gleich mehrere Elemente.

let array = [1,2,3,4,5,6,7,8,9];

Fisher-Yates Algorithmus

Der Fisher-Yates Algorithmus[EN] ist die einfachste Form ein Array zu mischen. Er besteht aus einer rückwärts zählenden for-Schleife und einer zufällig erhaltenen Zahl, die ans Array übergeben wird.

function shuffle(array){
  let j, x;
  // for-Schleife:
  for(let i= array.length-1;i>0;i--){
    // Zufällige Zahl:
    j = Math.floor(Math.random() * (i+1));
    // Übergabe an Array:
    x = array[i];
    array[i] = array[j];
    array[j] = x;
  }
  return array;
}
let array = [1,2,3,4,5,6,7,8,9];
console.log(shuffle(array));

Was ist eine for-Schleife?

Jetzt fragt sich der Leser vielleicht, was zum Geier ist eine for-Schleife. Ich antworte ihm, eine for-Schleife ist ein Zähler, der in Schritten bis zu einem gewissen Stopp-Punkt zählt. Und bei jedem Schritt führt er den Code zwischen den geschweiften Klammern aus. In meinem Beispiel benutze ich die Variable i – ein primitiver Datentyp! -, die von der Zahl 8 – die Anzahl der Elemente des Arrays minus eins – bis zu der Zahl 1 herunter zählt.

Zusammenfassung

Wie ich so über den Code schaue, frage ich mich, wie lange die beiden Mathematiker darüber sinnierten, bis sie herausfanden wie es am Besten funktioniert, Zahlen mathematisch zu mischen. Hier noch ein Link zu einer Seite, auf der der Fisher-Yates Algorithmus im Einsatz ist.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.