Zufallsauswahl nach Wahrscheinlichkeit

Hallo!

Ich möchte mit PHP aus einer Liste (MySQL-DB) jeweils einen Eintrag zufällig auswählen. Dazu lade ich zunächst die gesamte Liste in ein Array.

Nun möchte ich aber, dass einige Einträge öfter als andere angezeigt werden. Ich möchte zB in eine Spalte einen Wert von 1 bis 3 eintragen, wobei Zeilen mit dem Wert 3 häufiger angezeigt werden sollen als Zeilen mit dem Wert 2 bzw. 1. Wie kann man so etwas realisieren?

Danke schonmal für Eure Antworten!

mfg, moosfett

am einfachsten wäre ein UNION SELECT…

Also erst mal ein einfaches
Select *blabls*
UNION SELECT *blabla* WHERE zaehler>1
UNION SELECT *blabla* WHERE zaehler>2

somit bekommst Du dann die Datensätze dementsprechend öfter rein…

Kann sein, dass Du UNION SELECT ALL schreiben musst…
Bin da etwas aus der Übung :wink:

Grüße
Munich

Hallo moosfett,

eine zweite Idee wäre, Du spendierst ein Array mit der Summe der Wertigkeiten

array[0]['text']='Anton'; array[0][wert]=1;
array[1]['text']='Berta'; array[1][wert]=2;
array[2]['text']='Carla'; array[2][wert]=3;

und generierst die Zufallszahl immer von 0 bis zum Maximalwert. Solltest Du jetzt wünschen, das Berta 3 mal so häufig angezeigt wird, setzt Du nur Ihre Wertigkeit (in der Datenbank bzw. Array) hoch.

array[0]['text']='Anton'; array[0][wert]=1;
array[1]['text']='Berta'; array[1][wert]=4;
array[2]['text']='Carla'; array[2][wert]=5;

Damit ersparst Du Dir die Abhängigkeit vom SQL-Statement, denn dies kann nur bestimmte Werteausprägungen.

MfG Georg V.

danke für den tipp!

ich hab es jetzt so ähnlich gemacht:

ich lese die einträge, die öfter kommen sollen einfach mehrfach ins array ein.

ich verstehe nicht ganz, wie dann der aufruf stattfinden soll

erstmal habe ich ja einen gewissen index von 0 bis irgendwas bei dieser methode, dann den inhalt und noch den wert

aber wie soll ich das mit dieser methode dann aufrufen?

weiß nicht ob ich grad aufm schlauch steh aber ich verstehs net o_O

Hallo moosfett,

wenn Du eine Zufallszahl hast, gehst Du das Array mit Index Wert solange hoch, bis der Wert größer als Deine Zufallszahl ist: Der Index um 1 kleiner ist Dein gesuchter Wert. Wenn Du den Minimalwert weist, kannst Du Dir auch einige Suchschritte sparen.

MfG Georg V.

ich glaub jetzt hab ich das einigermaßen verstanden werd ich morgen gleich mal ausprobieren wenn ich zeit habe

vielen dank für die hilfe!

mfg, moosfett