Bannersystem und Prioritäten
joah.
- datenbank
0 Ilja0 Matti Maekitalo0 Ilja
0 Ludger0 Sven Rautenberg
Hallo Leute,
ich habe in einer MySQL Datenbank beispielsweise 50 Banner stehen, für die ich entweder paar Cents pro Klick bekomme, oder manchmal auch ein paar Euro wenn jemand dort etwas kauft.
Nun möchte ich hier Prioritäten vergeben, z.B. sollten bestimmte Banner öfters angezeigt werden. Hat jemand eine Idee, wie ich das realisieren kann? Ich hatte anfangs für die Banner die ich prioritisieren will einfach 2 Datensätze eingefügt, aber das ist ja auch nicht das gelbe vom Ei.
Mfg
Joah.
yo,
Nun möchte ich hier Prioritäten vergeben, z.B. sollten bestimmte Banner öfters angezeigt werden. Hat jemand eine Idee, wie ich das realisieren kann? Ich hatte anfangs für die Banner die ich prioritisieren will einfach 2 Datensätze eingefügt, aber das ist ja auch nicht das gelbe vom Ei.
nur eine idee auf die schnelle. du fügst zwei mehr spalten ein, die eine spalte enthält einen initialwert (int) und die zweite den aktuellen wert(int) der rückwärts läuft. es werden immer die banner angezeigt, die den höchsten aktuellen wert besitzten und dann der aktuelle wert um eins vermindert. ist ein banner bei 0 angekommen, wird wieder der initalwert als aktueller wert übernommen. so sollte es möglich sein, dass bestimmte banner öfters vorkommen als andere.
Ilja
use Mosche;
nur eine idee auf die schnelle. du fügst zwei mehr spalten ein, die eine spalte enthält einen initialwert (int) und die zweite den aktuellen wert(int) der rückwärts läuft. es werden immer die banner angezeigt, die den höchsten aktuellen wert besitzten und dann der aktuelle wert um eins vermindert. ist ein banner bei 0 angekommen, wird wieder der initalwert als aktueller wert übernommen. so sollte es möglich sein, dass bestimmte banner öfters vorkommen als andere.
Dann passiert folgendes:
a) Alle Banner landen in irgendeiner Reihenfolge auf der 1
(Beweis dazu ist einfach zu führen: hat mindestens ein Banner einen akt. Wert ungleich 1 (also größer), wird dieser angezeigt, solange bis sein Wert 1 ist).
b) Dann wird aus allen Bannern "zufällig" (je nach Implementation) eins ausgewählt und dann folglicherweise deren Wert auf den Initialwert gesetzt. Dieses Banner wird dann solange angezeigt, wie dessen Wert ungleich 1 ist. Dann ist man wieder bei a)
Es wird also relativ oft der gleiche Banner hintereinander gezeigt. Wenn die "Zufallsauswahl" bei b)vorhersagbar ist oder gar immer das gleiche Ergebnis liefert, dann wird ab dem Punkt, an dem das erste Mal b) erreicht wird, immer der gleiche Banner angezeigt.
Oder habe ich einen Gedankenfehler?
use Tschoe qw(Matti);
yo,
Oder habe ich einen Gedankenfehler?
nee, schon richtig gesehen, war halt eine schnelle lösung. sollte aber einfach zu korregieren sein, indem man alle erst auf 0 laufen läßt und dann wieder alle initialisiert.
Ilja
Hi,
Nun möchte ich hier Prioritäten vergeben, z.B. sollten bestimmte Banner öfters angezeigt werden. Hat jemand eine Idee, wie ich das realisieren kann? Ich hatte anfangs für die Banner die ich prioritisieren will einfach 2 Datensätze eingefügt, aber das ist ja auch nicht das gelbe vom Ei.
eine bemerkenswert trockene Loesung, das mit den zwei Datensaetzen.
Besser waere es allerdings einen Alghorythmus an den Start zu bringen, der Banner zufaellif und einer Regel folgend laedt. Du muesstest ja schon eine Logik haben, die zufaellig Banner laedt, diese gilt es anzupassen.
Bevor wir das aber tun sollten wir in der Tabelle Banner eine neue Spalte anlegenm, die z.B. Banner_Priority heisst und bestimmt, wie haeufig der Banner geladen werden soll (einen Integer wuerde ich da empfehlen).
Ein "trockener" Algorythmus koennte zum Beispiel (wie bisher) darin bestehen einen Banner zu laden und dann in Abhaengigkeit der Priority "eine Muenze" werfen und unter bestimmten Umstaenden den banner nicht anzeiegen und einfach noch einmal in den Banner-Topf greifen.
Gruss,
Ludger
Moin!
Nun möchte ich hier Prioritäten vergeben, z.B. sollten bestimmte Banner öfters angezeigt werden. Hat jemand eine Idee, wie ich das realisieren kann?
Du mußt dir eine Zufallsfunktion schnitzen. :)
Mal als Grundüberlegung:
Du hast vier Banner. Die gewünschten Anteile der Häufigkeit des Erscheinens ist:
Banner 1: 4fach
Banner 2: 3fach
Banner 3: 2fach
Banner 4: 1fach
Summe: 4+3+2+1 = 10
Daraus wird als prozentualer Anteil:
Banner 1: 4 / 10 = 0,4 = 40%
Banner 2: 3 / 10 = 0,3 = 30%
Banner 3: 2 / 10 = 0,2 = 20%
Banner 4: 1 / 10 = 0,1 = 10%
Wenn du dir jetzt eine Zufallsfunktion nimmst, die gleichverteilt Werte von 0,0 bis 1,0 liefert, dann wird die folgende Intervallaufteilung dir die richtige Erscheinungshäufigkeit liefern:
0,0 bis 0,4 = Banner 1
0,4 bis 0,7 = Banner 2
0,7 bis 0,9 = Banner 3
0,9 bis 1,0 = Banner 4
Wenn diese Umrechnung auf Prozente blöd ist, dann kann man natürlich auch mit Integern arbeiten:
Wertebereich geht von 0 bis zur Summe aller Anteile (hier: 10)
0 bis 4 = Banner 1
4 bis 7 = Banner 2
7 bis 9 = Banner 3
9 bis 10 = Banner 4
Hi Sven,
Du mußt dir eine Zufallsfunktion schnitzen. :)
wie macht man das "profikorrekt" bei 25 Bannern (ich glaube, es waren so viele)?
Gruss,
Ludger
Moin!
Du mußt dir eine Zufallsfunktion schnitzen. :)
wie macht man das "profikorrekt" bei 25 Bannern (ich glaube, es waren so viele)?
Die gewünschten Anteile summieren und anteilsmäßig zufallsmäßig selektieren. Ob das nun 4 oder 400 Banner sind, dürfte relativ egal sein.
Hi,
Du mußt dir eine Zufallsfunktion schnitzen. :)
wie macht man das "profikorrekt" bei 25 Bannern (ich glaube, es waren so viele)?
Die gewünschten Anteile summieren und anteilsmäßig zufallsmäßig selektieren. Ob das nun 4 oder 400 Banner sind, dürfte relativ egal sein.
nun mein ad hoc Vorschlag war fuer jeden Banner einen Zahlenwert zu speichern, wovon dann abhaengig gemacht wird, ob der bereits "ausgeloste" Banner nun auch tatsaechlich angezeigt wird. Also, ist der Zahlenwert z.B. '0.1', dann wird der Banner mit einer Wahrscheinlichkeit von 10% angezeigt und mit einer Wahrscheinlichkeit von 90% wird weiter in den Lostopf gegriffen. Das wuerde funktionieren, ist aber nicht "profikorrekt", wenn ich mir diese Selbstkritik an dieser Stelle mal zugestehen darf.
Dann gibts noch den Vorschlag von Ilja, der sympatisch ist, aber auch echte Maengel zu haben scheint: Was ist, wenn neue Banner hinzukommen? Was ist, wenn nur noch wenige Banner "im Topf" sind?
Und dann gibts noch Deinen Vorschlag, der die permanente Pflege einer Regel beinhaltet. Soll jeweils die gesamte Datentabelle vor jedem Losvorgang geladen werden, ja, vermutlich.
Gruss,
Ludger
yo,
Dann gibts noch den Vorschlag von Ilja, der sympatisch ist, aber auch echte Maengel zu haben scheint: Was ist, wenn neue Banner hinzukommen? Was ist, wenn nur noch wenige Banner "im Topf" sind?
ich denke mal, beide wege sind machbar. wenn neue banner hinzu kommen, stellt es eigentlich für beide wege kein all zu grosses problem da. letztlich funktionieren sie ohne eine bestimmte anzahl von bannern, ist also davon unabhängig, es würde halt nur ein neuer datenzatz hinzukommen. der vorteil bei meinem weg liegt darin, dass man genau vorhersagen kann, welches banner angezeigt wird, sprich man kann genaue zahlen liefern und es besser abstimmen.
Ilja