Welcome to the LimeSurvey Community Forum

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

zufällige Zuordnung aus einem Wortpool

  • verun4ik
  • verun4ik's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 years 8 months ago #218791 by verun4ik
zufällige Zuordnung aus einem Wortpool was created by verun4ik
Hallo alle zusammen,

ich möchte in der Umfrage zufällig aus 13 Wörtern ( AX, BX; CX; DX; EX; FX; GX; HX; IX, JX, KX; LX) immer nur zwei auswählen und in die Frage einbauen. Also so ungefähr:
Befragender 1 Anzeige

Frage 1: Was denken Sie über AX?
Anwort: Freitext

Frage 2: Was denken Sie über JX?
Antwort: Freitext

Befragender 2 Anzeige

Frage 1: Was denken Sie über LX?
Anwort: Freitext

Frage 2: Was denken Sie über IX?
Antwort: Freitext

Befragender 3 Anzeige

Frage 1: Was denken Sie über LX?
Anwort: Freitext

Frage 2: Was denken Sie über CX?
Antwort: Freitext

usw. Wie wäre es möglich?

Besten Dank
verun4ik
The topic has been locked.
  • tpartner
  • tpartner's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 8 months ago #218794 by tpartner
Replied by tpartner on topic zufällige Zuordnung aus einem Wortpool
Please use English in this section of the forum.

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The topic has been locked.
  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 8 months ago #218798 by holch
Replied by holch on topic zufällige Zuordnung aus einem Wortpool
Ich verschiebe das mal ins deutsche Forum.

Bitte immer im richtigen Forum posten, erhöht auch die Chancen auf eine Antwort.

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

The following user(s) said Thank You: verun4ik
The topic has been locked.
  • verun4ik
  • verun4ik's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 years 8 months ago #218824 by verun4ik
Replied by verun4ik on topic zufällige Zuordnung aus einem Wortpool
Hat jemand eine Idee?
LG verun4ik
The topic has been locked.
  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 8 months ago #218828 by holch
Replied by holch on topic zufällige Zuordnung aus einem Wortpool
OK, ein Wort wäre einfach. Zwei auch. Aber zwei unter der Bedingung dass sie sich nicht wiederholen ist etwas komplizierter.

Da habe ich keine Lösung parat.

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 8 months ago #218831 by Joffm
Replied by Joffm on topic zufällige Zuordnung aus einem Wortpool
Hallo,
das kann man wohl mit der "Standard javascript-Lösung"  zur Bestimmung von n Elementen aus einem Pool von m bewerkstelligen.

Ich denke einmal ins Blaue:
Du erstellst eine Frage vom Typ "Mehrfache kurze Texte" mit zwei Teilfragen.
Dorthinein kommt folgender javascript code
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 = ["AX", "BX", "CX", "DX", "EX", "FX", "GX", "HX", "IX", "JX", "KX", "LX"];
 
      arr = shuffle(arr);
 
      var thisQuestion = $('#question{QID}'); 
      $('input[type=text]:eq(0)', thisQuestion).val(arr[0]);        
      $('input[type=text]:eq(1)', thisQuestion).val(arr[1]);
      $('#question{QID}').hide();
   });
</script>

Da diese Frage mithilfe das javascripts ausgeblendet wird "$('#question{QID}').hide();"  darf sie nicht in der Anzeigeform "Frage für Frage" benutzt werden. Es würde eine leere Form entstehen, welche nur die "Zurück" und "Weiter"-Button zeigt.
Daher propagieren wir ja immer "Gruppe für Gruppe" anzuzeigen, aber nur eine Frage in jede Gruppe zu stecken; dann sieht es für den Benutzer aus wie "Frage für Frage".
Aber hier kannst Du dann diese Frage zusammen mit einer anderen in einer Gruppe haben.

Gut, was gibt das alles?
 

Du erhältst zwei zufällige Elemente, auf die Du mit {QCode_SQ001} bzw: {QCode_SQ002} zugreifen kannst.

Viel Erfolg

Joffm

Und jetzt ist mir noch nicht klar, was hier gemeint ist mit "dass sie sich nicht wiederholen". 
Wie soll das, wenn überhaupt, gemeint sein?

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 8 months ago #218844 by holch
Replied by holch on topic zufällige Zuordnung aus einem Wortpool

Und jetzt ist mir noch nicht klar, was hier gemeint ist mit "dass sie sich nicht wiederholen".

Das kam ja von mir.

ich gehe einfach davon aus, dass dem gleichen Teilnehmer nicht zweimal das gleiche Wort angezeigt werden sollt. Ansonsten hätte man das ja mit zwei Zufallszahlen machen können, da kann es aber ja passier, dass man eben zweimal das gleiche Wort präsentiert bekommt, was vermutlich nicht so sonderlich sinnvoll ist.

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

The topic has been locked.
  • verun4ik
  • verun4ik's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 years 8 months ago #218990 by verun4ik
Replied by verun4ik on topic zufällige Zuordnung aus einem Wortpool
Vielen Dank dafür.

Ich hätte eine Frage, die in ähnliche Richtung geht. Und zwar möchte ich dei einer Matrixfrage (Zahlen) mit checkboxes, aus 50 Teilantworten zufällig nur 13-16 Optionen anzeigen.

Mit {if(random==1, random, (rand(1,5)))} funktioniert es nicht, wenn ich es in jede Zeile eingebe.

Hat wer eine Idee?
Besten Dank
verun4ik
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 8 months ago #219024 by Joffm
Replied by Joffm on topic zufällige Zuordnung aus einem Wortpool
Das machst Du - fast - genauso.
Nimm eine Frage vom Typ "kurzer Text". Nennen wir sie "QPool"
Darin dieses script; fast identisch mit dem vorigen.
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 < 51; i++) {
         arr.push(("0"+i).slice(-2));
      }
 
      arr = shuffle(arr);
      anumbers = arr.slice(0,15).join('#');
      $('#question{QID} input[type="text"]').val("#"+anumbers+'#');
      $('#question{QID}').hide();
   });
</script>

Du erhältst dann so etwas in der Frage:
#12#34#03#45#21#26#46#01#16#32#38#44#09#36#39

Die Rauten haben zwei Aufgaben.
1. Ohne die führende Raute würde der Text mit "12" beginnen; wenn man nun nach der "12" sucht, hat sie den Index "0". "0" bedeutet aber wiederum, "nicht gefunden". Dies wird so vermieden.
2. Wenn man die einzelnen Zahlen nicht trennen würde ("1234034521..."), würde auch die Zahl "23" gefunden, die nicht in Pool enthalten ist.

Und jetzt ist klar wie man weiter vorgeht.
Die 1. Teilfrage wird gezeigt, wenn "01" im Text enthalten ist, die 2., wenn "02" enthalten ist, usw.

Dazu dient die Funktion "strpos", die - wie oben schon gesagt, entweder "0" zurückgibt, wenn der Teilstring nicht enthalten ist, oder die Stelle, an welcher er beginnt.

Also:
Teilfrage 1: strpos(QPool,"01")>0
Teilfrage 2: strpos(QPool,"02")>0
Teilfrage 3: strpos(QPool,"03")>0
...
​​​​​​​Teilfrage 50: strpos(QPool,"50")>0
​​​​​​​

zufällig nur 13-16 Optionen

Da musst Du Dich schon einigen. Dieser Wert wird im script fest eingetragen (arr.slice(0,15)), also hier 15.
Sicherlich könnte man jetzt anfangen, durch das script einen String mit 16 Ziffern zu erzeugen.
Danach eine Gleichung, die eine Zufallszahl zwischen 13 und 16 erzeugt.
Dann noch eine Gleichung, die den String mit Hilfe der Funktion "substr" auf die dann zufällige Länge kürzt.
Und dien nimmt man dann für die Relevanzgleichung.

Joffm

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

Lime-years ahead

Online-surveys for every purse and purpose