0 votes
in SoSci Survey (dt.) by s148208 (135 points)

Hallo,

Ich möchte gerne dargebotene Bilder innerhalb meines Fragebogens randomisieren.

Hierbei müssen aber diese Bilder nicht komplett aus einem Pool gezogen werden, sondern einem bestimmten Schemata folgen:

So gibt es insgesamt 32 Bilder: 16 neutrale, 8 positive, 8 negative

Es soll immer ein zufällig positives Bild kommen, dann ein zufällig neutrales und schließlich ein zufälliges negatives Bild und nochmals ein zufällig neutrales. Und dies ganze 8mal, dass letztendlich jedes der 32 Bilder einmal verwendet wurde.

Ich bin nur leider komplett ratlos, wie ich dies anstelle und wäre sehr dankbar um Hilfe!

1 Answer

0 votes
by SoSci Survey (327k points)
selected by s148208
 
Best answer

Ja, das ist nicht ganz trivial...

Was Sie brauchen, sind drei Listen (Arrays) für die 3 Kategorien. Die mischen Sie mittels shuffle(). Und dann bauen Sie einfach nach dem gewünschten Schema zusammen:

// Die Bilder definieren wir mal separat und weisen ihnen Nummern zu. Ist einfacher
$bilder = [
  1 => 'bild.N1.jpg',
  // ...
  16 => 'bild.N16.jpg',
  21 => 'bild.P1.jpg',
  // ...
  28 => 'bild.P8.jpg',
  31 => 'bild.N1.jpg',
  // ...
  38 => 'bild.N8.jpg'
];

// Die Abfolge definieren wir nur einmal
if (isset($abfolge)) {
  $neutral = [1,2,3, ... 16];
  $positiv = [21,22,23, ... 28];
  $negativ = [31,32,33, ... 38];
  shuffle($neutral);
  shuffle($positiv);
  shuffle($negativ);
  // Jetzt das Zusammenbauen: 8 mal dasselbe Schema
  $abfolge = [];
  for ($i=0; $i<8; $i++) {
    $abfolge[] = $positiv[$i];
    $abfolge[] = $neutral[2*$i];  // Ergibt die Indizes 0, 2, 4, 6, ..., 14
    $abfolge[] = $negativ[$i];
    $abfolge[] = $neutral[2*$i + 1];  // Ergibt die Indizes 1, 3, 5, 7, ..., 15
  }
  registerVariable($abfolge)
}

// Jetzt noch anzeigen
$bildID = loopPage($abfolge);
$bildName = $bilder[$bildID];
html('<div><img src="'.$bildName.'" alt=""></div>');

Und falls Sie zu den Bildern noch Fragen zeigen möchten: Anhand der $bildID ist das ganz einfach möglich. Mit putList() können Sie die verwendete Abfolge auch bequem abspeichern.

Update: Ich nahm Ihre Frage zum Anlass, derartige Rotationen (und den Code hier im speziellen) etwas ausführlicher in der Anleitung zu erklären: Komplexe Rotationen

by s148208 (135 points)
Vielen Dank, dass hat mir wirklich sehr geholfen. Auch die Anleitungsseite mit den Erklärungen, da wurde mir schnell klar, wie das funktioniert.

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...