Hallo,
um das "per Hand eingreifen" noch etwas zu erläutern.
Du hast anfänglich in der Frage "zufall1" dieses stehen:
{if(is_empty(zufall1),rand(1,3),zufall1)}
und die Gruppen haben die folgenden Relevanzgleichungen:
A: zufall1==1
B: zufall1==2
C: zufall1=
Nehmen wir nun an, Deine Gruppe A ist voll.
Dann könntest Du
a. die Relevanzgleichungen ändern zu
A: zufall1==0
B: zufall1==1 OR zufall1==2
C: zufall1=
wenn Gruppe B noch etwas schwach ist, oder eben andersherum, wenn Du mehr Leute in Gruppe C benötigst.
b. Die Erstellung der Zufallszahl ändern in
{if(is_empty(zufall1),rand(2,3),zufall1)}
Damit werden dann nur noch ziemlich gleichmäßig die beiden Zahlen "2" oder "3" erzeugt.
Halte ich für besser.
Das heißt natürlich, dass Du permanent die Antworttabelle überwachen musst.
Aber mit ziemlicher Wahrscheinlichkeit sind die übrigen Gruppen ebenfalls bereits mit mehr als 26 Leuten gefüllt, wenn die erste Gruppe voll ist.
Dann könntest Du es auch einfach laufen lassen, bis alle Gruppen voll sind.
Und eine gewisse Overquota ist auch ein bisschen notwendig.
Es gibt immer einige Teilnehmer, die "nicht ganz so konzentriert zur Sache gehen", also "Speeder, "Happy Clicker", "Orig-Antworter", usw., die Du einfach aus der Analyse herausschmeißen musst.
Und zur Trennung von Logik und Display:
Ich bin da voll auf holchs Linie. Und die Art der Programmierung "Eine Frage pro Gruppe" mit Darstellung "Gruppe für Gruppe" hat sich als ganz praktikabel erwiesen.
Du zeigst, wie es eigentlich vorzuziehen ist, eine Frage pro Bildschirm an, hältst Dir aber die Option offen, ausnahmsweise einmal mehrere Fragen anzuzeigen.
Außerdem erfordern gewisse Workarounds, bei denen mehrere Fragen in eine einzige "hineingemauschelt" werden, diese Vorgehensweise.
Und zum Schluss:
Um die zufällige Zuordnung ... zu den Gruppen zu ermöglichen, habe ich das Format auf "Frage für Frage" eingestellt.
Das ist jetzt keine Kausalität. Hat eigentlich nichts miteinander zu tun.
Viel Erfolg
Joffm
So und jetzt kommt der Nachschlag.
Leider beachtet keiner den ersten Artikel hier
Bitte erst dies lesen, dann erst im Forum schreiben!
Damit weiß ich nichts über Deine Installation.
Theoretisch ist auch der anspruchsvollere Weg über einen ajax call möglich, mit welchem Du ein kleines Progrämmchen aufrufst, welches die Datenbank abfragt, und dann in einer Art "least filled" die Gruppe zurückgibt, die bisher am wenigsten gefüllt ist.
Dazu benötigst Du aber den Zugriff auf die Datenbank und Du solltest LimeSurvey selbst gehostet und ein wenig Ahnung von php und MySQL haben.
Außerdem für Deine kleine Studie etwas überdimensioniert.
Ich wollte es aber erwähnt haben.