- Posts: 8
- Thank you received: 0
Welcome to the LimeSurvey Community Forum
Ask the community, share ideas, and connect with other LimeSurvey users!
zufällige Zuordnung aus einem Wortpool
- verun4ik
- Topic Author
- Offline
- New Member
Less
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
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
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 10099
- Thank you received: 3589
2 years 8 months ago #218794
by tpartner
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
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
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 11639
- Thank you received: 2737
2 years 8 months ago #218798
by holch
I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.
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.
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
- Topic Author
- Offline
- New Member
Less
More
- Posts: 8
- Thank you received: 0
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
LG verun4ik
The topic has been locked.
- holch
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 11639
- Thank you received: 2737
2 years 8 months ago #218828
by holch
I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.
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.
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
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 12892
- Thank you received: 3965
2 years 8 months ago #218831
by Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
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
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?
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
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 11639
- Thank you received: 2737
2 years 8 months ago #218844
by holch
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.
Replied by holch on topic zufällige Zuordnung aus einem Wortpool
Das kam ja von mir.Und jetzt ist mir noch nicht klar, was hier gemeint ist mit "dass sie sich nicht wiederholen".
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
- Topic Author
- Offline
- New Member
Less
More
- Posts: 8
- Thank you received: 0
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
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
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 12892
- Thank you received: 3965
2 years 8 months ago #219024
by Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
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.
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
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
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
Da musst Du Dich schon einigen. Dieser Wert wird im script fest eingetragen (arr.slice(0,15)), also hier 15.zufällig nur 13-16 Optionen
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