Hier würde ich ganz pragmatisch vorgehen.
Zunächst: Wenn du diese sechs Items randomisierst, hast Du 720 verschiedene Möglichkeiten.
Jetzt kannst Du einmal ausrechnen. wieviele Teilnehmer Du benötigst, um alle diese Möglichkeiten mindestens einmal zu erhalten.
Daher:
Bilde vier Fragen mit festen, aber unterschiedlichen Reihenfolgen, z.B.
1: a,b,c,d,e,f,g,h
2: a,h,g,f,e,d,c,b
3: a.b,g,c,e,d,f,h
4: a,f,g,b,e,c,h,d
oder irgendwie so ähnlich.
Hierbei würde ich die Codes der einzelnen immer identisch lassen, da es das spätere Umstrukturieren für die Auswertung erleichtert
Dann am Anfang eine Zufallszahl {if(is_empty(zufall),rand(1,4),zufall)}
und eine der Fragen mittels Bedingung einblenden.
Und jetzt kommt die sophisticated Lösung.
Benutze tayloring.
In einer Frage vom Typ "kurzer Text" (sie möge QText heißen) folgendes script
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 with your prices
var arr = [2,3,4,6,7,8];
// Shuffle the array
arr = shuffle(arr);
// Pick only the first element of the array
arr = arr.join('');
// Fill the question with this element
$('#question{QID} input[type="text"]').val(arr);
// After testing hide the question by removing the slashes of the next line
// $('#question{QID}').hide();
});
</script>
Das sieht dann so aus
Dann kannst Du nacheinander die Zeichen dieses Strings herausgreifen (mit der Funktion "substr") und in den Teilfragentext mit einem verschachtelten IF den entsprechenden Text einblenden, wie
1. Teilfrage ist ja klar, das ist a
2. Teilfrage (Zeilenumbrüche nur zum besseren Lesen, dürfen im Code nicht enthalten sein)
{if(substr(QText,0,1)=="2","Text Frage b",
if(substr(QText,0,1)=="3","Text Frage c",
if(substr(QText,0,1)=="4","Text Frage d",
if(substr(QText,0,1)=="6","Text Frage f",
if(substr(QText,0,1)=="7","Text Frage g","Text Frage h"
)))))}
Bei der dritten Teilfrage wird dann das zweite Element des Textes genommen, also "substr(QText,1,1)", usw.
Später sieht man dann in QText, in welcher Reihenfolge die Fragen angezeigt wurden.
Geht, ist aber etwas Mühe beim Umstrukturieren; es sei denn, man macht sich ein kleines Makro in EXCEL
Joffm