Wenn ich Ihr Design korrekt verstehe, dann haben Sie auch mit Urne/Zuallsgenerator ein gewisses Risiko: Wenn viele Personen gleichzeitig den Fragebogen ausfüllen, dann könnten alle anderen Optionen gezogen werden und anschließend geht es doch wieder von vorne los.
Wie viele Einträge haben Sie denn in der Datenbank? Wie viele Personen möchten Sie befragen? Arbeiten Sie mit einer Multi-Level-Struktur, also mit multilLevelDown()?
> Alternativ könnte ich auch die normale rand()-funktion verwenden, aber dann müsste ich mir über das verlassen der Seite hinweg merken, welche Nummern bereits gezogen wurden
Dafür gibt es eine bessere Lösung: Erstellen Sie zu Beginn ein Array mit allen Optionen (z.B. via dbKeys()), mischen Sie dieses Array mittels shuffle() und arbeiten Sie es dann von vorne weg ab. Das ist im Prinzip genau das was Sie suchen: Keine Wiederholungen innerhalb einer Person, ansonsten rein zufällig.
Aber seien Sie gewarnt: Bei einer uneingeschränkten Zufallsauswahl werden manche Ihrer Datenbank-Optionen überhaupt gar nie nicht gezogen. Andere mehrfach.
> Ich gehe davon aus, dass wenn ich es nicht verhindere, die Urne sich automatisch zurücksetzt, wenn sie leer ist.
Genau ... und dann haben Sie eben auch nicht den Ärger der ungleichen Verteilung. Wenn nicht allzu viele Personen zeitgleich ausfüllen (gemessen an der Anzahl Optionen), sollte auch das o.g. Problem nicht auftreten.
Aber damit das funktioniert, werden Sie über eine Multi-Level-Struktur gehen müssen. Sonst gehen Ihnen schnell die Variablen aus.
> Sollt ich für das Auswertungsproblem eine seperate Frage machen, wenn es soweit ist?
Unbedingt :)
> eine Kontrollgruppe für Machine-Learning im Bereich Sarkasmus-Erkennung bildet.
Wow, da bin ich auf die Ergebnisse gespannt! Sarkasmus zu erkennen ist ja schon für Menschen oftmals schwer. Schicken Sie mir doch bitte eine kurze Notzi an die info@soscisurvey.de, wenn Sie Ergebnisse haben. Das interessiert mich!