Randomisierung einer Liste: Ziehen ohne Zurücklegen

Lindchen

Neues Mitglied
Liebe Nutzer,

ich versuche gerade für ein verhaltenswissenschaftliches Experiment mit Java eine Zufallsziehung ohne Zurücklegen zu programmieren - bin aber leider nicht erfolgreich, da ich kaum über Programmierkenntnisse verfüge (bin Psychologin). Ich wäre Euch deshalb sehr dankbar, wenn mir einer von Euch helfen könnte...
Folgendes möchte ich tun:
Ich habe vier Bilder und möchte diese Bilder in eine zufällige Reihenfolge bringen. Keines der Bilder soll sich wiederholen (also Ziehen ohne Zurücklegen). Folgenden Ansatz habe ich bereits (bitte nicht lachen, ich habe wirklich überhaupt keine Ahnung), der Code ist aber anscheinend noch unvollständig, es funktioniert so nämlich nicht:

(...)

<script type="text/javascript">

int a, b, c, d;
a = (int)(Math.random()*3+1);
do {
b = (int)(Math.random()*3+1);
} while (b == a);
do {
c = (int)(Math.random()*3+1);
} while (c == a || c == b);
do {
d = (int)(Math.random()*3+1);
} while (d == a || d == b || d == c);

bild1 = "p"+ a;
bild2 = "p"+ b;
bild3 = "p"+ c;
bild4 = "p"+ d;

document.getElementById("bild1").value = bild1;
document.getElementById("bild2").value = bild2;
document.getElementById("bild3").value = bild3;
document.getElementById("bild4").value = bild4;

</script>

Die Bilder heissen bei mir p1, p2, p3 und p4 - um auf die Bilder zuzugreifen, setze ich deshalb die Variablennamen zusammen aus "p" und den Zufallszahlen.

Kann mir jemand sagen, was ich machen muss?

Ihr würdet mir sehr weiterhelfen!!!


Lindchen
 
ich würde es so machen (kA ob das so läuft, ungetestet --> evtl. hilft undefined nicht):
Code:
var data = new Array(1, 2, 3, 4);
var shuffledData = new Array();
var len = data.length;
for (var i = 0; i < len; i++) {
    var index = parseInt(Math.random() * data.length);
    shuffledData[i] = data[index];
    for (var j = index; j < data.length - 1; j++) {
        data[j] = data[j + 1];
    }
    data[data.length - 1] = undefined; // ka ob man so oder evtl mit null die array-grösse verringern kann
}
// nun ist in shuffledData alles zufällig
 
Hab ich mir zuerst auch gedacht, allerdings dachte ich mir, dass dies bei vier Einträgen weniger Sinn macht - ist aber bei genauerem Überlegen wohl nicht logisch.
 

Zurück
Oben