Gut, um es zu verstehen:
Du hast irgendwo 100 Alternativen, kurz gesagt:
lang, kurz, dick, dünn, oben, unten, schmal, breit,...
Nun stellst Du 10 Fragen mit zwei Antwortmöglichkeiten, die zufällig aus den 100 genommen sind, wie
1: dünn - oben
2: lang - breit
...
Dabei können bereits einmal verwendete Alternativen auch ein zweites Mal auftauchen.
Dies könntest Du z.B. so bewerkstelligen.
In eine Frage vom Typ "kurzer Text" fügst Du dieses kleine javascript-snippet ein:
(Ich habe das Array nur bis 30 gefüllt, das müsstest Du eben bis zur Anzahl Deiner Alternativen erweitern)
Code:
<script type="text/javascript" charset="utf-8">
function shuffle(array) {
var currentIndex = array.length, temporaryValue, randomIndex;
// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
// And swap it with the current element.
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
$(document).on('ready pjax:scriptcomplete',function(){
// Fill the array
var arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30];
arr = shuffle(arr);
anumbers = arr.slice(0,2).join(',');
$('#question{QID} input[type="text"]').val("#,"+anumbers+",");
// Um die Frage zu verstecken, natürlich aktivieren
// $('#question{QID}').hide();
});
</script>
Damit erhältst Du schon einmal Folgendes:
also zwei Indizes für Deine Alternativen.
In einer Frage vom Type "langer Text" (LT) könntest Du nun als Vorgabewerte Deine Alternativen eintragen.
Durch das "#" will ich zeigen, dass alle Texte die gleiche Länge haben - mit Leerzeichen aufgefüllt.
Nun kannst Du Dir mithilfe der eingebauten Stringfunktionen Deinen ausgewählten Text herausholen.
Dies widerholst Du einfach 10mal.
Andererseits kannst Du natürlich auch alles in eine große IF-Abfrage packen:
Zunächst erstellen wir wieder eine Frage von Typ Gleichung (eq1) um die erste Zahl zu finden, also
{substr(Q1,2,2)} Obwohl der string ja #,25,20 lautet, beginnt unsere Zahl an der Stzelle 2, da die Funktion "substr" bei "0" anfängt.
Dann könnte man schreiben:
{if(eq1==1,"lang",if(eq1==2,"kurz",if(eq1=

, "dick",if(eq1==4, "dünn",if(eq1==5, "oben",if(eq1==6, "unten",if(eq1==7, "schmal",if(eq1==8,"breit",...))))...}
Das ist wohl nicht so günstig, da Du dann 100 schließende Klammern am Ende hast.
Um sogar sicherzustellen, dass keine Alternative zweimal vorkommt, könntest Du den javascript-Teil ändern, indem Du gleich 20 Zahlen auswählst. Einfach dies Zeile ändern
anumbers = arr.slice(0,20).join(',');
So, dass ist erst einmal ein Überblick.
Ich werde noch einmal nachdenken und nach Deinem Input, gerade was die "Alternativen" angeht, ein Beispiel machen.
Joffm
P.S.
Ich habe noch ein kleines Beispiel gemacht, aber nur 5 Vergleiche aus 50.
Aber Du siehst, wie es gehen kann.
Man muss beachten: Obwohl die Texte nur 10 Zeichen lang sind, geht die Formel von 12 Zeichen aus. (Klar, Carriage Return + LineFeed)