Naja, gut, jetzt hat holch Dir die Arbeit abgenommen.
Die erste Frage ist natürlich: von welchem Fragentyp ist die Frage, auf der die Entscheidung für die erste Frage beruht?
Dann: Möchtest Du, dass die Frage des "Siegers" immer zuerst kommt, und danach der zufällig ausgewählte "Verlierer"?
Oder ist das egal?
Und natürlich: Ist sichergestellt, dass es immer einen eindeutigen Sieger gibt?
Ich werde jetzt zunächst skizzieren, was die Vor- und Nachteile sind.
Wenn die Reihenfolge erhalten werden soll, müsstest Du 5 einzelne Fragen anlegen für den Sieger, die durch Relevanz eingeblendet werden - und danach noch 5 Fragen für den Verlierer.
Ansonsten genügen 5 Fragen, da ja einfach 2 aus 5 angezeigt werden.
Du kannst auch nur zwei Fragen anlegen und blendest Dein "OR", "DR", ... per Expression Manager ein (Stichwort: Micro-Tayloring.
So, und jetzt zur Programmierung.
Deine Skizze sagt ja so etwas, wie: Es gewinnt der mit der höchsten Punktzahl, oder so.
Da die Frage nach dem Fragentyp nicht klar ist, nehme ich einfach eine multiple Zahleneingabe (Q1) für die 5 Items, die mit "unique(self)" validiert ist, dass es keine gleichen Werte gibt.
Also bestimmen wir zunächst einmal die höchste Punktzahl.
Also eine Gleichung "eqMax". Mit der Funktion "max(x1,x2,...)", in unserem Fall also {max(that.Q1)} bestimmen wir die höchste Punktzahl.
Dann ist also der "Sieger" dasjenige Item, welches diese Punktzahl hat.
Und wir müssen uns nur um die anderen kümmern.
Um nun aus den restlichen vier zufällig einen auszuwählen, benutze ich gerne einen String.
Mithilfe der Funktion "join" und dem "If"-statement erzeugen wir diesen.
{join(if(Q1_SQ001!=eqMax,"1",""),if(Q1_SQ002!=eqMax,"2",""),if(Q1_SQ003!=eqMax,"3",""),if(Q1_SQ004!=eqMax,"4",""),if(Q1_SQ005!=eqMax,"5",""))}
Wir bekommen also einen String, der aus den Ziffern besteht, die nicht dem MaxWert-Item entsprechen.
Und jetzt suchen wir zufällig eins aus.
Natürlich mit der Funktion "rand(x,y)" und der Funktion "substr".
Nennen wir diese Gleichung "eq2"
{
substr(join(if(Q1_SQ001!=eqMax,"1",""),if(Q1_SQ002!=eqMax,"2",""),if(Q1_SQ003!=eqMax,"3",""),if(Q1_SQ004!=eqMax,"4",""),if(Q1_SQ005!=eqMax,"5","")),
rand(0,3),1)}
Hier ist also alles zusammen.
Wir nehmen den Teilstring "
substr" aus unserem "
join", und zwar von der zufälligen Stelle
rand(0,3) an, und
1 Zeichen lang.
Die Zufallszahl wird übrigens von 0 bis 3 erzeugt, da "substr" bei "0" anfängt zu zählen; das erste Zeichen hat also den Index "0".
So, jetzt haben wir also ein Zeichen, das uns das zweite, zufällige Item angibt.
Wenn Du nun für jedes Item "OR", "DR", ... eine Frage anlegst, wäre die Relevanzgleichung
OR: Q1_SQ001==eqMax OR eq2=="1" (also: entweder hatte OR den höchsten Wert oder wurde in eq2 ausgewählt.
DR: Q1_SQ002==eqMax OR eq2=="2"
...
Und alle diese 5 Fragen haben denselben Randomisierungsgruppennamen, damit die zwei gewählten in zufälliger Reihenfolge erscheinen
Solltest Du es vorziehen mit Micro-Tayloring zu arbeiten, reduziert sich alles auf zwei Fragen.
In die erste fügst Du in den Fragentext so etwas ein wie:
Dies ist die Frage zum "Sieger", nämlich {if(Q1_SQ001==eqMax,"OR",if(Q1_SQ002==eqMax,"DR",if(Q1_SQ003==eqMax,"MC",if(Q1_SQ004==eqMax,"PC","TC"))))}
Auch hier wird wieder verglichen, wer die höchste Punktzahl hat, und dann das Item eingeblendet.
Und in die andere Frage:
Dies ist die Frage zum anderen zufällig ausgesuchten Item, nämlich {if(eq2=="1","OR",if(eq2=="2","DR",if(eq2=="3","MC",if(eq2=="4","PC","TC"))))}
Hier wird entsprechend mit "eq2" verglichen.
Okay, viel geschrieben.
Hier ein Beispiel mit beiden Szenarien.
Ich habe auf "Gruppe für Gruppe" gestellt; dann sieht man das Ergebnis besser.