Hallo,
Die im (sehr alten) Skript genutzte Lösung mit einem Array fand ich daher relativ elegant, geht sowas mit den Gleichungen nicht mehr?
Natürlich geht das; zeige ich unten.
Zunächst gesagt: Zufall bleibt Zufall.
Wir alle haben in der Schule mit dem Galton-Brett gespielt und damit die Binomialverteilung gelernt.
D.h. es ist wurscht, wie Du die Zufallszahl bestimmst. Das Ergebnis ist irgendwie verteilt Und nach dem Gesetz der großen Zahl wird es prozentual immer besser.
Gut, das nebenbei.
wenn ich dann aber bspw. feststelle, dass Gruppe 3 und 5 schon gut gefüllt sind und in den anderen Gruppen noch Antworten fehlen hätte ich ein Problem.
Das ist doch kein wirkliches Problem.
1. Bezahlst Du die Leute?
Wenn nicht, lass es einfach laufen, bis alle Gruppen voll sind.
Eine gewisse Overquota benötigst Du sowieso. Stichwort "Qualitätssicherung"
Denn es gibt immer irgendwelche Hanseln und Spaßvögel, seien es "Speeder", "Justifier", "Happy Clicker" oder Leute, die mit "Orig-Antworten" glänzen wollen oder in jeder offenen Frage ihr Weltbild zu Besten geben. Die musst Du ja rausschmeißen.
Und was dann noch überzählig ist, lässt Du Deine Oma per Zufall rausschmeißen.
Die Oma ist eine Person, die nun wirklich gar nichts mit der Umfrage am Hut hat, und einfach blind sagt, der und der fliegt raus.
2. Eben doch javascript (Nebenbei gefragt: Hast Du die Rechte, javascript einzusetzen? Ist bei Uni-Installationen oft nicht der Fall)
Ist im Tutorial, Kap. 3.2.1.
Dort wird zwar "x out of y" gezeigt, ist aber analog auf Deine Sache anzuwenden.
Frage vom Typ "kurzer Text" und
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, hier Zahlen von 1 - 6
var arr = [1,2,3,4,5,6];
arr = shuffle(arr);
$('#question{QID} input[type="text"]').val(arr[0]);
$('#question{QID}').hide();
});
</script>
Und wenn eine Gruppe voll ist, entfernst Du einfach die Zahl aus dem Array.
3. Falls Du keine Rechte hast, ist es ja ein Einfaches dies mit drei Fragen vom Typ "Gleichung" zu ersetzen
1. "eqBase"
{123456}
2. "eqRand"
{if(is_empty(eqRand,rand(1,strlen(eqBase),eqRand)}
Erzeugt also eine Zufallszahl von 1 bis zur Länge des Textes in eqBase.
3. "eqZahl"
{substr(eqBase,eqRand-1,1)}
Greift sich aus eqBase die Zahl heraus, die an der Stelle eqRand steht (-1, weil substr bei 0 anfängt)
Damit erhältst Du dasselbe wie mit dem javascript.
Wenn eine Gruppe voll ist, änderst Du einfach den Eintrag in "eqBase", z.B. {1346}
Es gibt also sehr viele Möglichkeiten,. wobei ich aus alter Marktforschungserfahrung die erste präferiere.
Du kannst ja einmal in Excel oder OpenOffice testen, welche Verteilungen Du bei - sagen wir - 600 Teilnehmern erwarten kannst.
Das machst Du zehnmal und bekommst ein Gefühl, ob sich der Aufwand überhaupt lohnt.
Oder Du guckst einfach in irgendwelche wissenschaftliche Tabellen, um das 95% Vertauensintervall zu bestimmen.
Falls die Teilnehmer bezahlt werden, dann würde ich eher (3) als (2) benutzen.
So, das war recht schnell heruntergeschrieben.
Das Beste ist - falls Du noch Probleme hast - den lss Export dieser relevanten Fragen zu schicken.
Joffm