| Das zufällige Mischen von Elementen (shuffle) ist als Grundlage jedes Kartenspiels bekannt. | Hier wird gezeigt, wie Mischung mit Programmen ausgeführt werden kann. |
Algorithmen
|
Ausgewählte IT-Rezepte (Zufallszahlen) |
| Demonstration | Mischen und Sortieren |
| Algorithmus | Erstellung von Mischungs-Programmen |
Algorithmus zum Mischen |
|
|
Methode:
(1) Weisen sie jedem zu mischenden Element eine Zufallszahl zu.♦ Details zum Thema Zufallszahlen (2) Sortieren sie die Elemente nach den Zufallszahlen. |
Zahlreiche Varianten sind möglich.
Details finden sie im Internet unter Stichwort "shuffle". Die hier gezeigte Methode hat den Vorteil, dass nur ein minimales Programm zum eigentlichen Mischen benötigt wird, der Rest wird von jedem beliebigen Sortierprogramm erledigt. (Moderne Programmiersprachen bieten bequeme und sehr schnelle Sortier-Funktionen). Weiters kann die Mischung durch geeignete Wahl der Zufallszahlen auch auf einen Teil der Elemente beschränkt werden. |
|
►
Meist befinden sich die zu mischenden Elemente in einem Array (hier in
a1). ► Legen sie ein weiteres Array (hier a2) der gleichen Größe an und füllen sie es mit → Zufallszahlen. Das wird in diesem Beispiel durch die Funktion mix ausgeführt. ► Sortieren sie das Array mit den Zufallszahlen (a2) und gleichzeitig das Array mit den zu mischenden Elementen (a1). Das wird in diesem Beispiel durch die Funktion sort ausgeführt. An deren Stelle kann auch jede andere Sortier-Funktion verwendet werden. ► Zum Austausch von zwei Array-Elementen wird hier die Funktion xchange verwendet. Falls sich die zu mischenden Elemente nicht in einem Array befinden, können sie diese vor Beginn der Mischung / Sortierung in ein entsprechendes Array einlesen. Wenn das nicht möglich ist, können sie die Funktion xchange(a1,i,j) so modifizieren, dass die beiden Elemente vertauscht werden. Diese Methode kann auch auf eine große Anzahl von Elementen angewendet werden. In diesem Fall verzichten sie auf Arrays (zu großer Speicherbedarf) und lesen entsprechende Daten (z.B. von einer Datei oder Datenbank) ein. Der Ersatz von Arrays durch Dateien bedingt allerdings einen bedeutend höheren Zeitaufwand (z.B. Faktor 1000). |
Mischen mit
Javascript (vereinfacht):
// Test-Array:
a1 = new Array("weiss","rot","grün","blau","schwarz");
// Hilfs-Array:
a2 = new Array();
// Anwendung:
mix();sort(); // Funktionen
function mix() {
for(var i=0;i<a2.length;i++) {
}a2[i]=Math.random();
}
function sort() {
for(var i=0;i<(a2.length-1);i++) {
}
for(var j=i+1;j<a2.length;j++) {
}
if(a2[j]<a2[i]) {
}
xchange(a1,i,j);
}
xchange(a2,i,j); function xchange(a,i,j) { // Austausch der Elemente i,j von Array a
var x=a[j]; a[j]=a[i]; a[i]=x;
}
|
|
Live-Berechnung mit dem gezeigten Programm: Tipp: Wiederholen sie Mischen oder Sortieren ! |
a1 = (weiss,rot,grün,blau,schwarz)
|
| ♦ Details zum Thema Array in Javascript, Perl, PHP, VBA | |
|