Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Randomly show 9 out of 27 question groups in Version 3.22

  • LisaTW
  • LisaTW's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
3 years 2 months ago #212404 by LisaTW
Hi there,

I try to select randomly 9 out of 27 question groups. I only found this solution here  manual.limesurvey.org/Workarounds:_Surve...of_Y_question_groups
But this was based on Version 2.0 and select 4 out of 8, therefore I cannot follow this solution way to finish my design.
And I'd like to design specific answers (for example, if you choose different answers, the answer will lead you to different questions; or if you choose "yes", the survey will go on, if you choose "no", it will end), I don't know how to make this come true.

How to implement these in Version 3.22?

Great thanks for your help and time.
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 2 months ago #212411 by Joffm
Hi,
to select 9 out of 27 groups you may use this:

1. Create a question of type "short text" in a group before your "random groups" (let's call it "random")
2. Enter this javascript in source code mode into the question text.
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 = [];
      for (var i = 1; i < 28; i++) {
         arr.push(("00" + i).slice(-2));
      }
      arr = shuffle(arr);
      arr = arr.slice(0,9).join(',');
      $('#question{QID} input[type="text"]').val("#,"+arr);
      $('#question{QID}').hide();
   });
</script>
If you comment this line 
//      $('#question{QID}').hide();
you will see something like this
 

Now you select your groups by entering the relevance equations:
Random Group 1: strpos(random,"01")>0
Random Group 2: strpos(random,"02")>0
Random Group 3: strpos(random,"03")>0
​​​​​​​...

There are other option by using group properties like ".gseq"
".gseq" gives you the sequential number of the displayed groups, starting with "0".
So you may enter a relevance equation into the groups like "QCode.gseq<X", with "QCode" the code of the first question in this group.
Here you have to adapt the value of X.

Your next questions are a bit unspecified.

if you choose different answers, the answer will lead you to different questions

This you do by relevance equation in the question, like "Q1==4" (Question is displayed if the code in question Q1 was "4".

or if you choose "yes", the survey will go on, if you choose "no", it will end

Here you use a quota with limit "0", because you want to have "0" participants, who answered this question with "no"

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.

Lime-years ahead

Online-surveys for every purse and purpose