Hi,
I'd do it like this:
Create a question (QSelect) of type "short text" with the following javascript in the source code:
(the eight characters "A"..."H" represent your eight groups.
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 =["A","B","C","D","E","F","G","H"];
arr = shuffle(arr);
anumbers = '#' + arr.slice(0,4).join(',');
$('#question{QID} input[type="text"]').val(anumbers).trigger('keyup');
$('#question{QID}').hide();
});
</script>
This will return something like that:
#H,A,D,F
You see, there are randomly selected 4 characters out of the eight.
Now set the relevance equation of each group accordingly (display, if the string contains the character)
Group 1: strpos(QSelect,"A")>0
Group 2: strpos(QSelect,"B")>0
...
BTW: The leading "#" is there to avoid that (in this example) the letter "H" has the index "0", which also means "not found".
Joffm