Hi,
you can do it like this.
4 groups: each contains your array with all subquestions (40). Display them in randomized order.
In a question of type "multiple short text" use this javascript snippet to select 4 times 10 random numbers out of the 40.
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 = ["01","02","03","04","05","06","07","08","09",10,11,12,13,14,15,16,17,18,19,20, 21,22,23,24,25,26,27,28,29,30, 31,32,33,34,35,35,36,38,39,40];
arr = shuffle(arr);
var a1 = arr.slice(0, 10);
var a2 = arr.slice(10, 20);
var a3 = arr.slice(20, 30);
var a4 = arr.slice(30, 40);
alert(a4);
$('#question{QID} input[type="text"]:eq(0)').val("#,"+a1);
$('#question{QID} input[type="text"]:eq(1)').val("#,"+a2);
$('#question{QID} input[type="text"]:eq(2)').val("#,"+a3);
$('#question{QID} input[type="text"]:eq(3)').val("#,"+a4);
// $('#question{QID}').hide();
});
</script>
Uncomment the last line to hide this question.
You will get something like this
Now you display your subquestion with the subquestion relevance equation
Page 1: subquestion 1: strpos(Q0_SQ001,"01")>0
Page 1: subquestion 2: strpos(Q0_SQ001,"02")>0
Page 1: subquestion 3: strpos(Q0_SQ001,"03")>0
...
Page 2: subquestion 1: strpos(Q0_SQ002,"01")>0
Page 3: subquestion 2: strpos(Q0_SQ002,"02")>0
...
Page 4: subquestion 39: strpos(Q0_SQ004,"39")>0
Page 4: subquestion 40: strpos(Q0_SQ004,"40")>0
Joffm