Gunnar Bittersmann: Zufallsausgabe

Beitrag lesen

Hello out there!

SPITZE hab daraus ne schicke Lösung basteln können.

Ganz gewiss nicht!! Siehe https://forum.selfhtml.org/?t=163655&m=1066385

Eine Lösung, ein Array wirklich zu durchmischen, sähe so aus:

var sortedArray = ["A", "B", "C", "D"];  
  
var shuffledArray = new Array();  
  
for (var i = sortedArray.length; i > 1;)  
{  
  var r = Math.floor(Math.random() * i); // Zufallszahl aus Bereich 0 ≤ r < i  
                                         // Bereich nimmt mit jedem Schleifendurchlauf um 1 ab  
  
  shuffledArray[--i] = sortedArray[r];   // vermindere Schleifenindex  
                                         // kopiere zufällig ausgewähltes Element ans Ende des Zielarrays  
  
  sortedArray.splice(r, 1);              // lösche eben kopiertes Element aus Ursprungsarray  
                                         // damit ist vermindertes i gleich aktueller sortedArray.length  
}  
  
shuffledArray[0] = sortedArray[0];

Eine andere Lösung wäre, einmal eine ganzzahlige Zufallszahl r aus dem Bereich 0 ≤ r < n! (n = sortedArray.length; n! = 1 * 2 * 3 * ... * n) zu ziehen und anhand dieser diejenige Permutation auszugeben, die in der sortierten Liste aller Permutationen an r-ter Stelle steht.

See ya up the road,
Gunnar

--
„Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)