PHP - Prozentualer Zufall?

  • Hallo,
    ich habe nun schon eine ganze Weile überlegt, aber mir fällt einfach
    nichts ein. Ich würde gerne per Zufall eine ID aus der Datenbank
    auslesen. Dies kriege ich hin. Jedoch möchte ich mehren Partnern
    meines Portals verschiedene prozentuale Einblendungen geben.

    Beispiel:
    Partner 1: 80% Chance eingeblendet zu werden - da gute Partnerschaft
    Partner 2: 30% Chance eingeblendet zu werden - da nicht der beste Partner...

    Ist soetwas möglich?

  • hm, wie wärs damit, noch eine Spalte anzulegen, in der die Partnerschaft einen numerischen Wert bekommt.
    1 für toller Partner, 10 für Arschloch

    Dann kannst du die Wahrscheinlichkeiten bereits mit einem einfachen rand() "steuern":

    PHP
    $where = rand(1,10);
    $sql = "SELECT zeuch FROM partner WHERE id=zufall AND partner_wert <= $where";

    Das ist nun zwar kein mathematisch genaues System, aber auf die schnelle sollte das funktionieren.

    Gruß,
    jojo


  • Dein Vorschlag gefällt mir eigentlich ziemlich gut. Ich ärger mich nur
    immer das ich auf sowas selten komme :)

    Wenn ich das richtig sehe müsste ich also in einer Schleife das
    durchlaufen lassen, bis es ein Ergebnis gibt.

    Wenn jemand eine mathematische Rechenlösung dafür hat wäre
    ich natürlich auch darüber froh, man lernt ja nie aus ;)

  • edit: Ups, sry, verguckt.... ;) schnell ändern und vergessen... ;)

    Oder so:

    PHP
    $rand = rand(1,10);
    if($rand >= 1 && $rand <= 8) deine abfrage, hierfür ist die wahrscheinlichkeit 80%.
    elseif($rand == 9) deine abfrage, hierfür ist die wahrscheinlichkeit 10%.
    elseif($rand == 9) deine abfrage, hierfür ist die wahrscheinlichkeit auch 10%.

    So kannst du die unterschiedlichen Prozentzahlen vergeben... =)

    wert.TeeeX.de
    Wie gut ist die technische Umsetztung deiner Website wirklich?
    Teste es!

    2 Mal editiert, zuletzt von -Bambino- (22. Mai 2009 um 20:42)

  • Mach doch einfach eine Liste mit den IDs, muss ja kein Zufall sein, z.B.:

    Code
    1
    2
    1
    3
    4
    2
    1
    3


    1 wäre ein Premium-Partner, 2 und 3 so lala und 4 käme nur selten.
    In der Session speicherst du einen Zähler, was als nächstes eingeblendet werden soll und dann inkrementierst du ihn. Mit % oder einem Vergleich kannst du verhindern, dass das Ende überschritten wird. Dann liest du eben die ID an der Stelle aus.