Bilder in zufälliger Reihenfolge anzeigen

Hallo liebe Leute,

ich habe ein Script, mit dem man ein Bild aus einem Bilderpool zufällig ausgeben kann. Das klappt auch wunderbar:

var x = new Array(„Bild1.jpg“,„Bild2.jpg“,„Bild3.jpg“);
var zaehler = x.length;
var zufall = Math.floor(Math.random()*zaehler);
document.write("");

Jetzt möchte ich aber alle Bilder aus dem Bilderpool ausgeben, aber in immer zufälliger Reihenfolge. Ich komme nicht drauf, wie ich das Script verändern muss, damit das klappt. ich dachte, ich gebe für die verschiedenen Bilder einfach „zufall+1“ und „zufall+2“ an, das klappt aber natürlich nicht, weil die Zahl dann meistens außerhalb des Arrays liegt. Man müsste ihm irgendwie sagen können, dass er, wenn „zaehler“ erreicht ist, er wieder bei 1 beginnen soll.

Hat jemand eine Hanung wie ich das realisieren kann? Versteht mich überhaupt einer… :wink:

Alles Liebe und vielen Dank
André

Hallo André

Jetzt möchte ich aber alle Bilder aus dem Bilderpool ausgeben,
aber in immer zufälliger Reihenfolge. Ich komme nicht drauf,
wie ich das Script verändern muss, damit das klappt. ich
dachte, ich gebe für die verschiedenen Bilder einfach
„zufall+1“ und „zufall+2“ an, das klappt aber natürlich nicht,
weil die Zahl dann meistens außerhalb des Arrays liegt. Man
müsste ihm irgendwie sagen können, dass er, wenn „zaehler“
erreicht ist, er wieder bei 1 beginnen soll.

Hat jemand eine Ahnung wie ich das realisieren kann?

Du musst eine Liste von indices [0,1,2,3,4 … ANZAHL-1]
erzeugen, diese „mischen“ (shuffle) und dann die Liste
abarbeiten. z.B.: Untitled Document

function ShuffleMe(myarray) {
for( var i=0; i<myarray.length; i++ ) {
var k = parseInt(Math.random()*myarray.length), j = myarray[k];
myarray[k] = myarray[i], myarray[i] = j;
}
return myarray;
}

var Bilder = new Array( ‚bild0.jpg‘, ‚bild1.jpg‘, ‚bild2.jpg‘,
‚bild3.jpg‘, ‚bild4.jpg‘, ‚bild5.jpg‘, ‚bild6.jpg‘ );

var Reihenfolge = ShuffleMe( new Array(0, 1, 2, 3, 4, 5, 6) );

for( var i=0; i<Reihenfolge.length; i++ ) {
document.write(i + ". = " + Bilder[Reihenfolge[i] ] + „<br>“);
}
Grüße

CMБ

Hallo André,

ich würde es so machen, wenn das erste Bild den Anfang bestimmen soll und ab da die „Runde“ gedreht werden soll:

// Array mit Bildern
var x = new Array( „Bild1.jpg“, „Bild2.jpg“, „Bild3.jpg“ );
// Anzahl der Bilder = Maximum (+1) des zulässigen Index
var maxidx = x.length;
// log ist der ln, daher log10(x)=ln x/ln 10
// Faktor ist ein Multiplikator um die Zufallszahl in die richtige Größenordnung zu bringen
var faktor = parseInt( Math.pow( 10, Math.ceil( Math.log( maxidx ) / Math.log( 10 ) ) ) );
// Anfangsbild bestimmen
var zufall = parseInt( Math.floor( Math.random() * faktor ) ) % maxidx;
// Und nun alle Bilder
for ( var i = 0 ; i " );
}

Gruß
Volkmar

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]