Ergebnis 1 bis 7 von 7

Thema: Wie setze ich dieses Zufallssystem am besten um?

  1. #1
    Großmeister(in) Avatar von MyXoToD
    Registriert seit
    07.11.2007
    Ort
    Mainz
    Alter
    24
    Beiträge
    507
    Danke
    0
    Bekam 1 mal "Danke" in 1 Posting

    Standard Wie setze ich dieses Zufallssystem am besten um?

    Hallo liebes Forum

    Ich glaube fast ich steh auf dem Schlauch und seh den Wald vor Bäumen nicht... Vielleicht könnt ihr mir weiterhelfen, mir fällt absolut keine gute Lösung hierfür ein:

    Der User ruft ein Script auf. Wenn er Glück hat, gewinnt er am Ende etwas. Alle Preise + die prozentuale Chance diesen Preis zu ergattern stehen in einer Datenbank. Bsp.:

    Teddybär - 10%
    Auto - 5%
    1 Million Euro - 1%

    Sollte soweit klar sein.

    Am Anfang von dem Script setze ich einen Marker auf False. Danach laufe ich in einer Schleife alle Preise durch und möchte dort mit einer Möglichst einfachen Rechnung ausrechnen ob der Gegenstand gewonnen wurde oder nicht. (Zufallssystem nach Zahlen oder so)
    Wenn der Gegenstand, der aktuell im Durchlauf ist, gewonnen wurde, wird der Marker auf true gesetzt und die Schleife wird beendet. Die Schleife wird solang durchlaufen, bis ein Preis gewonnen wurde oder das Ende der Schleife (der letzte Preis) erreicht ist.

    Wie würdet ihr diese Rechnung in der Schleife am sinnvollsten lösen? Mir fällt grad nur Schwachsinn ein. Bin mir sicher, dass es irgendwie einfacher geht. Vielleicht kennt auch irgendjemand ein Gewinnspielscript, bei dem ich mir Hilfe holen kann. Hab in Google einige solcher Scripte gefunden aber nicht, was mir hätte weiterhelfen können.

    Merci
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    Don't follow me, I run into walls.

  2. #2
    König(in) Avatar von Grevas
    Registriert seit
    20.04.2009
    Ort
    In meiner Wohnung.
    Alter
    30
    Beiträge
    1.039
    Danke
    0
    Bekam 5 mal "Danke" in 5 Postings

    Standard AW: Wie setze ich dieses Zufallssystem am besten um?

    PHP-Code:
    <?php
    $preise 
    = array("Teddy" => 0.10"Auto" => 0.05);

    foreach ( 
    $preise as $preis => $chance ) {
      if( (
    $rolled random(0100)) <= ($chance 100) ) {
        
    $won $preis;
        break;
      }
    }
    if( isset(
    $won) ) {
      echo 
    "You won $won !!!11einself1 ;; you rolled $rolled , the chance was " . ($preise[$won]*100) . "% ! Congrats";
    }
    ?>
    sowas?

    //P.S. Ist natürlich so beschiss Wenn du's ehrlich machen willst:

    PHP-Code:
    <?php
    $preise 
    = array("Auto" => 0.05"Teddy" => 0.10); // ordered by chance ASC

    $rolled random(0100);
    foreach ( 
    $preise as $preis => $chance ) {
      if( (
    $rolled <= ($chance 100) ) { // $chance could be already mutiplied in SQL or actually saved in percent.. Who cares.
        
    $won $preis;
        break;
      }
    }
    if( isset(
    $won) ) {
      echo 
    "You won $won !!!11einself1 ;; you rolled $rolled , the chance was " . ($preise[$won]*100) . "% ! Congrats";
    }
    ?>
    oder aber auch gleich mit SQL... (indem fall ausgehend von % angaben als int in der DB)
    SELECT (RAND() * 100) as rolled, chance, name FROM articles WHERE chance > rolled ORDER BY chance LIMIT 1
    Geändert von Grevas (20.04.2011 um 22:25 Uhr)

  3. #3
    Großmeister(in)
    Themenstarter
    Avatar von MyXoToD
    Registriert seit
    07.11.2007
    Ort
    Mainz
    Alter
    24
    Beiträge
    507
    Danke
    0
    Bekam 1 mal "Danke" in 1 Posting

    Standard AW: Wie setze ich dieses Zufallssystem am besten um?

    So wie in Code 1 hab ich es auch gemacht bisher. Wieso wäre es beschiss? Es muss doch eigentlich für jedes Item extra gewürfelt werden. Es geht mir später nicht direkt darum, dass ein User an einem "Gewinnspiel" teilnimmt, sondern eher, dass er etwas bei einer Aktion die er ausführt eventuell gewinnen kann.
    Don't follow me, I run into walls.

  4. #4
    König(in) Avatar von Grevas
    Registriert seit
    20.04.2009
    Ort
    In meiner Wohnung.
    Alter
    30
    Beiträge
    1.039
    Danke
    0
    Bekam 5 mal "Danke" in 5 Postings

    Standard AW: Wie setze ich dieses Zufallssystem am besten um?

    Das hat was mit Wahrscheinlichkeit zu tun.
    Wenn du jedesmal würfelst, haben die Sachen die später dran kommen noch niedrigere Chancen (weil sie gar nicht erst dran kommen, wenn etwas anderes gewonnen wurde). Z.B. stellst du ein Trostpreis rein mit 70% -> das Auto hat dadurch nur noch 30% Chance, also eine Chance von 0.3 * 0.05 insgesamt.

    // Edit; Meine Fresse, schreibe ich heute beschissene Sätze... Aber auch keine Lust es besser zu machen
    // Edit2: etwas ausgebessert... Grauenhaft :O
    Geändert von Grevas (20.04.2011 um 22:41 Uhr)

  5. #5
    Großmeister(in)
    Themenstarter
    Avatar von MyXoToD
    Registriert seit
    07.11.2007
    Ort
    Mainz
    Alter
    24
    Beiträge
    507
    Danke
    0
    Bekam 1 mal "Danke" in 1 Posting

    Standard AW: Wie setze ich dieses Zufallssystem am besten um?

    Alles klar, vielen Dank. Ich werd mal testen und hoffen, dass alles so klappt wie ich mir das auch anfangs vorgestellt habe Wird bestimmt noch 95 mal umgebaut aber was solls.

    // Edit: Mir ist da grad was aufgefallen. Muss es nicht "rand(1, 100)" sein? 0 bis 100 sind 101 Möglichkeiten oder sehe ich das falsch?^^
    Geändert von MyXoToD (20.04.2011 um 22:58 Uhr)
    Don't follow me, I run into walls.

  6. #6
    König(in) Avatar von Grevas
    Registriert seit
    20.04.2009
    Ort
    In meiner Wohnung.
    Alter
    30
    Beiträge
    1.039
    Danke
    0
    Bekam 5 mal "Danke" in 5 Postings

    Standard AW: Wie setze ich dieses Zufallssystem am besten um?

    Richtich... *hust* ...

  7. #7
    Großmeister(in)
    Registriert seit
    09.12.2008
    Ort
    Berlin
    Alter
    38
    Beiträge
    666
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: Wie setze ich dieses Zufallssystem am besten um?

    Vorausgesetzt du möchtest für einen Gewinn eine Chance von 1% haben, für einen anderen eine Chance von 10%, die Gesamtchance überhaupt irgendetwas zu gewinnen soll genau 10% sein (höchste Chance bei einem Gewinn). Dann kannst du nicht mit % rechnen ohne das Ergebnis zu verfälschen, also nicht mit einer Zufallszahl zwischen 1-100.
    Du musst eine "Reichweite von-bis" für jeden Gewinn bilden und 100 mit dem sich hieraus ergebenden "Überhang" faktorisieren. Dann eine Zufallszahl zwischen 1 und dem neuen Maxwert bilden und schauen ob die ermittelte Zahl in einer Gewinn-Range liegt.

    So in etwa (ungetestet eben runtergehackt):

    Code:
    Table prizes
    
    id | prize     | chance
    ---+-----------+-------
     1 | Auto      |      1
     2 | Teddy     |     10
     3 | Gutschein |     20
    PHP-Code:
    $sql "SELECT prize,chance FROM prizes ORDER BY chance ASC";
    $res $db->prepare($sql);
    $res->bind_result($prize,$chance);
    $res->execute();
    $rangedChances = array();
    $chanceSum 1;
    while(
    $res->fetch()) {
        
    $min $chanceSum;
        
    $max $chanceSum $chance 1;
        
    $rangedChances[] = array( "prize"=>$prize "min"=>$min "max"=>$max );
        
    $chanceSum+= $chance;
    }
    $rndMax round100 * ( $chanceSum $chance ) );
    $myChance random(1,$rndMax);
    $myPrize  null;
    if(
    $myChance<=$chanceSum) {
        foreach(
    $rangedChances as $curChance) {
            if(
    $myChance>=$curChance['min'] && $myChance<=$curChance['max']) {
                
    $myPrize $curChance['prize'];
                break;
            }
        }
    }
    if(
    $myPrize===null) {
        echo 
    "Leider nicht gewonnen.";
    }
    else {
        echo 
    "Herzlichen Glückwunsch, Sie haben gewonnen! Ihr Preis: {$myPrize}";

    Geändert von SinnlosS (21.04.2011 um 17:25 Uhr) Grund: zwei kleine fehler korrigiert
    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

Ähnliche Themen

  1. Wie setze ich dieses Menü mittels CSS um?
    Von Jazzzes im Forum HTML & CSS Forum
    Antworten: 5
    Letzter Beitrag: 13.07.2010, 19:39
  2. Wie setze ich sowas um? (Link anbei)
    Von markusweiler im Forum Flash Forum
    Antworten: 1
    Letzter Beitrag: 22.10.2007, 20:35
  3. Hilfe wie setze ich es zurück
    Von Obelix im Forum HTML & CSS Forum
    Antworten: 0
    Letzter Beitrag: 20.10.2006, 23:06
  4. will werbung für ebay machen auf meiner seite nur setze ich
    Von ctimtom im Forum HTML & CSS Forum
    Antworten: 8
    Letzter Beitrag: 09.09.2006, 23:37
  5. Wie setze ich Smilies in mein Gästebuch ein????
    Von Dj Kull im Forum Forum für Grafiken und Bildbearbeitung
    Antworten: 2
    Letzter Beitrag: 17.09.2003, 14:30

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •