Die Zufallszahl, die kein reiner Zufall mehr ist

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Die Zufallszahl, die kein reiner Zufall mehr ist

    Hallo, Leute,
    Ich hab da ein kleines Problem mit einer Zufallszahl, für dessen Ausführung ich keine Idee habe:
    In einem Behälter werden die vom Spieler erspielten Kugeln gesammelt, in 4 verschiedenen Farben. Nun soll der Computer aus dieser Menge (die sich ständig ändert) eine Zufalls-Kugel ziehen. Nehmen wir mal an, der Spieler hat:
    - 8 gelbe, 3 rote, 4 grüne und 0 blaue Kugeln bisher erspielt. Das sind insgesamt 15 Kugeln. Dann liegt die Wahrscheinlichkeit, daß eine gelbe Kugel gezogen wird, bei 53%, während die der roten bei 20% liegt und die der blauen gleich 0 ist.
    Dies soll nun bei der Zufallskugel berücksichtigt werden. Ich hab bloß keine Idee, wie ich dem "random" beibringen soll, daß er die prozentuale Aufteilung der Farben berücksichtigen soll. Wahrscheinlich ist es bloß eine Kleinigkeit, aber sie fällt mir einfach nicht ein.
    Kann jemand helfen? 8)
    Danke schon mal im voraus,
    Gruß Archie
    Signatur? Ich überlege mir noch eine. Die besten sind ja schon alle vergeben... :para:
  • copyboy schrieb:

    EDIT: So wäre es wahrscheinlich praktischer:
    Danke, ja, das wäre eine Möglichkeit. Werde ich gleich mal umsetzen. Warum komme ich nicht auf solche einfachen Ideen?? *grumpf* ;(
    Thx, Archie

    Edit: Ähm, ich will ja nichts sagen, aber funktionieren tut das nur dann, wenn die größte Prozentzahl stets an erster Stelle abgefragt wird. Dies ist aber nur im Ausnahmefall so. Die Folge: es kommen am häufigsten die Kugeln mit den kleinsten Prozentzahlen...
    Hat vielleicht noch jemand eine Idee?
    Archie
    Signatur? Ich überlege mir noch eine. Die besten sind ja schon alle vergeben... :para:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Archie ()

  • Vielleicht so:

    GML-Quellcode

    1. zahl = 1000;
    2. rand=random(zahl);
    3. ws = zahl/Anzahl_Kugeln;
    4. if (rand>0 and rand<=(Anzahl_Gelb*ws)){...}
    5. if (rand>(Anzahl_Gelb*ws) and rand<=(Anzahl_Gruen*ws)){...}
    6. if (rand>(Anzahl_Gruen*ws) and rand<=(Anzahl_Rot*ws)){...}
    7. if (rand>(Anzahl_Rot*ws) and rand<=(Anzahl_Blau*ws)){...}


    Je größer du zahl wählst, desto genauer müsste die Berechnung der Wahrscheinlichkeit sein.


    (BTW: Opera stürzt ständig ab, wenn ich auf Vorschau klicke oder den Beitrag editieren will...)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ISurf ()

  • ISurf schrieb:

    Je größer du zahl wählst, desto genauer müsste die Berechnung der Wahrscheinlichkeit sein.
    Ja, danke für den Tipp. Ich versuche das gleich mal und melde mich dann noch mal. :)
    Archie

    Edit:
    Leider, sorry, das funzt auch net. Kann auch nicht. Wenn wir mal beim obigen Beispiel bleiben (8 gelbe Kugeln von 15), dann käme bei Deiner Rechnung raus:
    ws=66,66. Nehmen wir an, die Zufallszahl wäre gerade 200, dann ergibt Deine Rechnung:

    GML-Quellcode

    1. if (rand > 0 and rand <= 533,28) {...} //hier stimmt's noch - aber schon in der nächsten Zeile:
    2. if (rand > 533,28 and rand <= 266,64) {...} // bei 4 grünen Kugeln - wird das nichts mehr.

    Eine Zahl kann nicht gleichzeitig größer als 533 und kleiner als 266 sein...
    Das Gleiche gilt für die folgenden Zeilen. Gibt es denn gar keine Formel, die diesen Fall, daß da 4 Farben unterschiedlicher Anzahl sind, berücksichtigt? Oder hat sich hier nur ein Fehler irgendwo eingeschlichen?
    Jedenfalls gibt es auch hier fast nur gelbe Kugeln, da die anderen Fälle gar nicht erst zutreffen können. *seufz*
    Gruß Archie
    Signatur? Ich überlege mir noch eine. Die besten sind ja schon alle vergeben... :para:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Archie ()

  • Stimmt, in der Eile hab ich das übersehen.

    GML-Quellcode

    1. zahl = 1000;
    2. rand=random(zahl);
    3. ws = zahl/Anzahl_Kugeln;
    4. ge=Anzahl_Gelb*ws;
    5. gr=Anzahl_Gruen*ws;
    6. r=Anzahl_Rot*ws;
    7. b=Anzahl_Blau*ws;
    8. if (rand>0 and rand<=(ge)){...} //Gelb
    9. if (rand>(ge) and rand<=(gr+ge)){...} //Grün
    10. if (rand>(gr+ge) and rand<=(gr+ge+r)){...} //Rot
    11. if (rand>(gr+ge+r) and rand<=zahl){...} //Blau
    Alles anzeigen


    Jetzt müsste es funktionieren.
  • Die bisherigen Codes sind doch schon nah dran. Schreib einfach ein Script (get_random_ball), das du dann später mit den 4 Werten für die Anzahl der Kugeln aufrufst:

    GML-Quellcode

    1. // script: get_random_ball
    2. balls_green = argument0;
    3. balls_red = argument1;
    4. balls_yellow = argument2;
    5. balls_blue = argument3;
    6. balls = balls_green + balls_red + balls_yellow + balls_blue;
    7. rand=random(balls);
    8. if (rand<balls_green) show_message("Grüne Kugel gezogen!");
    9. else if (rand<balls_green+balls_red) show_message("Rote Kugel gezogen!");
    10. else if (rand<balls_green+balls_red+balls_yellow) show_message("Gelbe Kugel gezogen!");
    11. else show_message("Blaue Kugel gezogen!");
    Alles anzeigen


    EDIT: zu spät.
    Einige meiner Spiele:
  • Benutzer online 1

    1 Besucher