hierbei sollen aber (im Rahmen der Zufallsauswahl) weniger bekannte Lieferanten bevorzugt werden.
Methodische Überlegung dazu: Wenn Sie das machen, dann werden Befragte mit Kontakt zu den seltenen Lieferanten (fast) immer zu diesen befragt und (fast) nie zu anderen. Wenn diese Befragten sich systematisch von den anderen Befrgten unterscheiden, dann kann das zu Verzerrungen bei der Beurteilung der "häufig genutzten" Lieferanten führen.
Ist das methodisch sinnvoll und auch umsetzbar?
Die Frage nach der Sinnhaftigkeit wird man ausführlich abwägen müssen. Es wird de facto die einzige Möglichkeit sein, um brauchbare Fallzahlen zu den selten genutzten Lieferanten zu bekommen.
Der technische Ablauf ist ein wenig aufwändiger, denn im Prinzip muss man den Zufallsgenerator nachprogrammieren - nur mit einigen Modifikationen.
Aber fangen wir von hinten an. Wir brauchen eine Liste mit Lieferanten (bzw. deren IDs) und wie häufig diese schon beurteilt wurden. Dafür verwenden Sie am besten die Datenbank für Inhalte. Mit dbData()
(muss ich nochmal nachsehen, da noch nicht dokumentiert) bekommen Sie dann ein Array mit allen Häufigkeiten.
Im nächsten Schritt müssen Sie dann die Liste der genutzten Lieferanten pro Teilnehmer/in mittels shuffle()
mischen. Und dann ordnen Sie jedem Lieferanten aus dem oben abgefragten Array die Häufigkeit zu, wie oft dieser schon abgefragt wurde.
Jetzt kommt der aufwändige Teil: Für jede Häufigkeit (oder Häufigkeitsklasse, wenn es etwas mehr Zufall sein soll) notieren Sie nun die bekannten Lieferanten. Sie hätten dann also eine Liste für Lieferanten, die bereits 1-10-mal abgefragt wurden, für Lieferanten, die 11-25-mal abgefragt wurden u.s.w. Jede Liste ist noch rotiert, wenn Sie aus der ursprünglich gemischten Liste "abgeschrieben" haben.
Diese Teil-Listen können Sie nun wieder zusammenfügen. Und zwar so, dass zuerst jene aus der kleinsten Häufigkeits-Kategorie kommen, dann jene mit der zweiten Kategorie u.s.w..
Und zuletzt nehmen sie aus der Liste die ersten 10 Einträge mittels array_slice()
. Diese können Sie dann abfragen. Dafür wiederum würde sich eine Multi-Level-Struktur anbieten.
Und zuletzt müssen Sie natürlich mit dbSet()
noch dafür sorgen, dass die Einträge in der Datenbank für Inhalte nach jeder Bewertung hochgezählt werden.
Wie gesagt: Ein wenig aufwändiger, aber durchaus realisierbar. Details gerne auf Nachfrage.