0 votes
in SoSci Survey (dt.) by s259744 (110 points)

Ich habe 20 Videos in je gekürzter und langer Fassung (also insgesamt 40 Videos). Jedem Teilnehmer sollen davon zufällig 10 kurze und 10 lange Videos in zufälliger Reihenfolge angezeigt werden. Wenn ein Video in kurzer Fassung gezeigt wurde, darf es nicht mehr in langer gezeigt werden und andersherum genauso.

Die Videos habe ich als Dropbox link und kann sie per HTML in eine Seite einbinden.

Was ist der beste Weg das Umzusezten? Ist es mit Urnen möglich und/oder php?

1 Answer

0 votes
by SoSci Survey (306k points)

Sie müssen zwei Zufallsziehungen "überlagern". Einmal die Reihenfolge und einmal, welche Version des Videos gezeigt werden soll.

Für die Reihenfolge können Sie einen klassischen Zufallsgenerator mit 20 Zetteln verwenden und daraus 20 ziehen. Mehr dazu in der Anleitung zur Rotation.

Für die Varianten haben Sie zwei Möglichkeiten. Entweder Sie mischen ein Array mit 10-mal 0 und 10-mal 1 per shuffle() oder Sie lassen aus einem Zufallsgenerator mit einer 1 und einer 2 20 Werte ziehen.

Anschließend gehen Sie 20 Werte durch (z.B. mittels loopPage()) und wissen dann aus der Kombination von erstem Array (Video-Nummer) und zweitem Array (Variante), welches Video Sie anzeigen möchten.

Wie Sie dann die Ausgabe erledigen, ist nochmal eine separate Aufgabe. Sie könnten z.B. ein zweidimensionales Array mit den URLs der Videos erstellen:

$videos = [
  1 => [1 => 'url1a', 2 => 'url1b'],
  2 => [1 => 'url2a',  2 => 'url2b'],
  // ...
];

Diese Struktur hat den Vorteil, dass Sie die Video-Nummer direkt für die Zeile und die Variante direkt als Index für die Spalte verwenden können.

Und je nachdem, ob Sie zu den Videos noch etwas abfragenm, möchten Sie vielleicht eine Multi-Level-Struktur verwenden. Das würde Ihnen in der Auswertung einige Stunden Umstrukturierung ersparen.

by s259744 (110 points)
Vielen Dank für die Antwort.
Wie kann ich diese "Überlagerung" genau implementieren? Bisher habe ich einen Zufallsgenerator der die 20 Zettel in zufälliger Reihenfolge aufruft. Ich verstehe nicht, wie ich nun einen zweiten Zufallsgenerator hinzufüge und so mit dem ersten Zufallsgenerator verknüpfe, dass am Ende 10 mal eine kurze und 10 mal eine lange Version gezeigt wurde, bzw. wie ich geeigneten PHP Code einbette.
by SoSci Survey (306k points)
>  Ich verstehe nicht, wie ich nun einen zweiten Zufallsgenerator hinzufüge

"Neue Frage" -> "Zufallsgenerator"

Die beiden Zufallsgeneratoren stehen erstmal nebeneinander.

> und so mit dem ersten Zufallsgenerator verknüpfe, dass am Ende 10 mal eine kurze und 10 mal eine lange Version gezeigt wurde, bzw. wie ich geeigneten PHP Code einbette.

Wenn Sie die beiden Zufallsgeneratoren korrekt eingestellt haben, dann bekommen Sie im Datensatz 2-mal 20 Variablen (20 pro Zufallsgenerator). Die müssen Sie dann nur noch mit z.B. loopPage() und id() durcharbeiten. Details gerne, wenn die Zufallsgeneratoren funktionieren.
by s259744 (110 points)
Ich habe jetzt einen Zufallsgenerator der aus Zahlen zwischen 1 und 20 ohne zurücklegen zieht und einen Zufallsgenerator der aus 10 mal 1 und 10 mal 2 zufällig und ohne zurücklegen zieht.
Zudem habe ich ich einen 2 dimensionalen Array mit 2 Spalten und 20 Zeilen. Darin stehen insgesamt 40 Zettel. In der ersten Spalte stehen stets die Zettel worin die kurzen Videos eingebettet sind, in der rechten Spalte die Zettel mit den langen Videos.
Wie kann ich nun den Output der Zufallsgeneratoren nutzen, um die Zettel afuzurufen und anzuzeigen?
by s259744 (110 points)
Okay, ich habe es jetzt auf folgende Art versucht, dies ist ein Test mit nur 4 Videos mit je zwei Versionen:

// Array mit den Zahlen 1 bis 4 in zufälliger Reihenfolge
$video = range(1, 4);
shuffle($video);

// Array mit 2 mal 1 und 2 mal 2 in zufälliger Reihenfolge
$version = array_merge(array_fill(0, 2, 1), array_fill(0, 2, 2));
shuffle($version);

// 2D Array mit den Zettel mit den Videos (je kurz und lang)
$zettelArray = [
    1 => [1 => 'T1a', 2 => 'T1b'],
    2 => [1 => 'T2a',  2 => 'T2b'],
    3 => [1 => 'T3a',  2 => 'T3b'],
    4 => [1 => 'T4a',  2 => 'T4b']
];

// Die Reihenfolge wird erstellt, $video gibt an welches Video, $version die Version
$reihenfolge = [];
for ($i = 0; $i < count($video); $i++) {
    $reihenfolge[] = $zettelArray[$video[$i]][$version[$i]];
};


setPageOrder($reihenfolge, 'Ende');


Es scheint zu funktionieren, nur die Prozentanzeige schwankt, je nachdem welcher Zettel zuerst angezeigt wird. Mal beginnt sie bei 25%, mal bei über 50%...
by SoSci Survey (306k points)
Sie arbeiten hier jetzt mit shuffle(), schreiben im vorigen Kommentar aber vom Zufallsgenerator. Das sind zwei komplett unterschiedliche Möglichkeiten, um an Zufallsziehungen zu kommen. Was davon *möchten* Sie denn verwenden?

> Es scheint zu funktionieren,

Es sieht auch ganz ordentlich aus. Stellen Sie aber sicher, dass Sie die Reihenfolge am Ende nicht für die Auswertung brauchen, denn wenn Sie mit shuffle() arbeiten, wird diese nicht automatisch gespeichert.

> nur die Prozentanzeige schwankt, je nachdem welcher Zettel zuerst angezeigt wird.

Das sollte bei setPageOrder() nicht der Fall sein.

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

...