Mathe, Stochastik, zwei Spieler spielen wiederholt eine Runde


  • Mod

    @omggg sagte in Mathe, Stochastik, zwei Spieler spielen wiederholt eine Runde:

    Ich glaube, in Schritt 4 oder 5 hast du die bedingte Wahrscheinlichkeit angewandt, oder?

    Im weiteren Sinne ja, als das man das auch als N unabhängige Ereignisse mit Wahrscheinlichkeiten p1=p2=...=pNp_1 = p_2 = ... = p_N formulieren kann, aber die Regeln zu Addition und Multiplikation von Wahrscheinlichkeiten sollte man eigentlich auswendig können. 2 + 2 = 4 leite ich mir ja auch nicht ständig neu aus den Peano Axiomen her.



  • Btw. ich hab ne coole Seite für Wahrscheinlichkeitsbäume entdeckt: http://ic50.org/probabilitree/

    Damit lässt sich zum Beispiel so eine Grafik zeichnen: https://i.postimg.cc/GtHtJTbL/14-05-24-15-08-39.png

    Ich weiß nur noch nicht, ob das zur Fragestellung passt. 😅

    @SeppJ sagte in Mathe, Stochastik, zwei Spieler spielen wiederholt eine Runde:

    2 + 2 = 4 leite ich mir ja auch nicht ständig neu aus den Peano Axiomen her.

    Man kann etwas als bekannt annehmen, sollte man in der echten Mathematik jedoch nicht machen, wenn alles aufeinander aufbauen soll, imho. Wenn ich in mein LinA 1 Buch schaue, fängt es genau damit an.

    Edit: Quatsch, meinte Analysis 1.




  • Mod

    @omggg sagte in Mathe, Stochastik, zwei Spieler spielen wiederholt eine Runde:

    Man kann etwas als bekannt annehmen, sollte man in der echten Mathematik jedoch nicht machen, wenn alles aufeinander aufbauen soll, imho. Wenn ich in mein LinA 1 Buch schaue, fängt es genau damit an.

    Hier kollidiert wieder, dass du eine Frage stellst, zu deren wirklich ausführlicher Beantwortung Uni-Mathematik nötig wäre, wodurch ich denke, dass du Mathematik studierst, aber das gar nicht stimmt. Ist mir schon einmal passiert, hatte ich aber wieder vergessen 😋

    Aber der Mathelehrer in der Oberstufe wird doch eher die bedingten Wahrscheinlichkeiten aus den einfachen Fällen zusammensetzen, anstatt die einfachen Fälle aus der bedingten Wahrscheinlichkeit herzuleiten, oder? Denn woher kommen sonst die Regeln zu bedingten Wahrscheinlichkeit?

    Kann aber auch sein, dass man die Kombinatorik in der Schullehre ganz anders herleitet. Ich hatte in der Schule nur den Kurs c) aus wobs Kategorisierung, weil ich keine Wahl hatte, da haben wir das Kapitel zu Wahrscheinlichkeitsrechnung im Buch übersprungen (Aber es war doch ein ganz exzellenter Kurs, keine Kritik an meinem Lehrer!), und ich habe das das erste Mal an der Uni gehört, wo das ein bisschen radikaler hergeleitet wird.



  • @SeppJ sagte in Mathe, Stochastik, zwei Spieler spielen wiederholt eine Runde:

    Das war schon viel zu viel, nehmen wir mal 6: 53%!

    Auf diese 53 % bei n=6 bin ich nun auch durch Rekursion gekommen, genauer, auf 0.533935546875 ...

    public class Wahr {
        public static void main(String[] args) {
            System.out.println("n=5: " + w(0, 0, 0, 15, 9, 20, 5));
            System.out.println("n=6: " + w(0, 0, 0, 15, 9, 20, 6));
            System.out.println("n=7: " + w(0, 0, 0, 15, 9, 20, 7));
        }
    
        public static double w(int deep, int w1, int w2, int p1, int p2, int n, int maxDeep) {
            if (deep > maxDeep) {
                return 0;
            }
            if (w1 == 5 || w2 == 5) {
                return 1;
            }
            double w0 = 0;
            for (int i = 0; i < n; i++) {
                w0 += 1.0 / n * w(deep + 1, w1 + (i < p1 ? 1 : 0), w2 + (i < p2 ? 1 : 0), p1, p2, n, maxDeep);
            }
            return w0;
        }
    }
    
    
    n=5: 0.23730468750000022
    n=6: 0.5339355468750003
    n=7: 0.7564086914062497
    

    Warnung: Ihr braucht einen leistungsstarken Computer, um das auszuführen.

    Ja, Prima, dann wäre das auch gelöst. 🙂

    Btw: Chat GPT (4) sagt bei mir, es kenne keine Formel dafür, nur probalistische Methoden. 😃



  • Was ich noch nicht verstehe, ist Folgendes: Jetzt kann nur Spieler 1 und Spieler 2 gewinnen, nur Spieler 1 gewinnen, oder keiner. In ein paar Fällen sollte es doch auch möglich sein, dass nur Spieler 2 gewinnt ...

    Glaube, das ist noch nicht das Gelbe vom Ei. Kann jemand einmal "gegenrechnen"?



  • @omggg Wie wäre es, wenn du selber rechnest? Du hast die Wahrscheinlichkeit, das Spieler 1 gewinnt (damit auch die, dass Spieler 1 nicht gewinnt) und die, das Spieler 2 gewinnt.

    Die Wahrscheinlichkeit, das nur Spieler 2 gewinnt ist P=(1P(Spieler 1 gewinnt))P(Spieler 2 gewinnt)P = (1-P(\text{Spieler 1 gewinnt})) * P(\text{Spieler 2 gewinnt})

    Edit: Um ein Gefühl dafür zu bekommen (und weil wir ein c++ Forum sind), kann man sich sowas auch simulieren

    #include <random>
    #include <print>
    #include <map>
    
    int main()
    {
      const int runs = 10;
      std::default_random_engine generator;
      std::bernoulli_distribution player1(0.75);
      std::bernoulli_distribution player2(0.45);
    
      std::map<bool, std::string> output{ {false, "lost"}, {true, "won"} };
    
      for (int i = 0; i < runs; ++i) {
        const auto resultPlayer1(player1(generator));
        const auto resultPlayer2(player2(generator));
        std::println("Player 1 {}, Player 2 {}", output[resultPlayer1], output[resultPlayer2]);
      }
      return 0;
    }
    

  • Mod

    @omggg sagte in Mathe, Stochastik, zwei Spieler spielen wiederholt eine Runde:

    @SeppJ sagte in Mathe, Stochastik, zwei Spieler spielen wiederholt eine Runde:
    Auf diese 53 % bei n=6 bin ich nun auch durch Rekursion gekommen, genauer, auf 0.533935546875 ...

    Erstens gibt es dafür die hier schon viel erwähnte Binomialverteilung, die dir direkt als Formel sagt, wie wahrscheinlich X Siege in N Versuchen sind. Zweitens gilt hier wieder wie bei meinem Aufsatz oben, dass die Zahlen so klein sind, dass man das einfach direkt ohne Formalismus ausrechnen kann, wenn man sich nur ein paar Minuten zum Nachdenken gönnt:

    • Was sind die Möglichkeiten, (mindestens) 5 Mal von 6 zu gewinnen? Zum einen kann man alle 6 gewinnen, zum anderen alle Möglichkeiten, wo man genau einmal verliert (also 5 Mal gewinnt). Diese sind alle trivial zu berechnen
    • 6 Siege sind offensichtlich P(X=6)=p6P(X=6) = p^6, bei p=0.75p=0.75 knapp 18%.
    • 5 Siege sind offensichtlich p5(1p)p^5 (1-p), weil man 5 Mal siegen und einmal verlieren muss
    • Es gibt 6 Varianten, wie man 5 Mal siegt, weil es egal ist, zu welchem der 6 Versuche man verliert. All diese Möglichkeiten schließen sich gegenseitig aus, man darf/muss also die Einzelwahrscheinlichkeit 6 mal nehmen um die Wahrscheinlichkeit zu bekommen, dass eine der Kombinationen mit 5 Siegen auftritt: P(X=5)=6p5(1p)P(X=5) = 6 p^5 (1-p), bei p=0.75p=0.75 gut 35%
    • Das man genau 6 Mal oder genau 5 Mal gewinnt, schließt sich offensichtlich ebenfalls gegenseitig aus, die Wahrscheinlichkeit für P(X5)P(X\geq5) ist daher die Summe P(X5)=P(5)+P(6)=6p5(1p)+p6P(X\geq5) = P(5) + P(6) = 6 p^5 (1-p) + p^6. Für p=0.75p=0.75 sind das die erwähnten gut 53%.

    Und so kann man sich das für solch kleine Zahlen herleiten, ganz ohne Binomialkoeffizienten kennen zu müssen. Das einzige was wir wissen mussten, ist, dass unabhängige(!) Wahrscheinlichkeiten multipliziert werden müssen, wenn man will, dass ein Ereignis UND ein anderes eintreffen sollen, und addiert werden müssen, wenn man eines ODER ein anderes will (wenn die sich gegenseitig ausschließen!).

    Btw: Chat GPT (4) sagt bei mir, es kenne keine Formel dafür, nur probalistische Methoden. 😃

    Kein Kommentar, außer dass du hoffentlich etwas daraus lernst.
    PS: Doch ein Kommentar, falls die Ironie nicht reicht: Neben meiner speziellen Formel oben für 5 aus 6 ist die allgemeine Formel, die jedermann in der Oberstufe oder im ersten Semester Uni lernt, dafür was die Wahrscheinlichkeiten für k Erfolge mit Wahrscheinlichkeit p bei N Versuchen ist:
    P(k,N,p)=N!k!(Nk)!pk(1p)NkP(k, N, p) = \frac{N!}{k!(N-k)!}p^k(1-p)^{N-k}
    Du erkennst das in meiner billig hergeleiteten Formel oben die Koeffizienten als 6 bzw. 1 herauskamen.



  • @Schlangenmensch Ja, aber du arbeitest da mit random und näherst dich immer weiter dem genauen Ergebnis an, das wollte ich vermeiden (also den probabilistischen Ansatz).

    Außerdem sehe der Code in C/C++ sehr ähnlich aus.

    Eigentlich kann es bei der Rekursion doch nur jeweils 4 Ausgänge geben: Keiner gewinnt, 1 gewinnt, 2 gewinnt oder beide gewinnen. Deshalb weiß ich nicht, ob meine Funktion (Zeile 16 bis 18) richtig ist ... weil das: 2 gewinnt und 1 verliert, quasi verschluckt wird. 🤷♂



  • @SeppJ sagte in Mathe, Stochastik, zwei Spieler spielen wiederholt eine Runde:

    PS: Doch ein Kommentar, falls die Ironie nicht reicht: Neben meiner speziellen Formel oben für 5 aus 6 ist die allgemeine Formel, die jedermann in der Oberstufe oder im ersten Semester Uni lernt, dafür was die Wahrscheinlichkeiten für k Erfolge mit Wahrscheinlichkeit p bei N Versuchen ist:
    P(k,N,p)=N!k!(N−k)!pk(1−p)N−kP(k, N, p) = \frac{N!}{k!(N-k)!}pk(1-p){N-k}P(k,N,p)=​k!(N−k)!​​N!​​p​k​​(1−p)​N−k​​
    Du erkennst das in meiner billig hergeleiteten Formel oben die Koeffizienten als 6 bzw. 1 herauskamen.

    Bitte poste doch korrekte Formeln (oder gar keine ...). Da kommt 0.35595703125 heraus, was natürlich ganz daneben ist:

    https://www.wolframalpha.com/input?i=((6!)%2F(5!(6-5)))0.75^5(1-0.75)^(6-5)

    Es gilt ja eben nicht, p_1 + (1-p_2) = 1 ...

    Aber ich verstehe schon, ich bin hier nicht gerne gesehen, deshalb kann @Schlangenmensch und Du mir Blödsinn erzählen ("merkt der ja eh nicht ..."). 😞

    Meine Frage war, ob 0.533935546875 exzakt ist oder nicht. Machts gut.


  • Mod

    Tipp: Wenn du andere kritisierst, dann denk vorher eine Minute nach. Besonders bei Mathematik.

    Was "Addition" ist, erkläre ich dir aber jetzt nicht. Frag dazu deinen Lehrer, ob ihr dafür schon weit genug seid.



  • Schau dir doch bitte die Partialsummen einmal an:

    https://www.wolframalpha.com/input?i=sum((n!)%2F(5!(n-5)!)0.75^5(1-0.75)^(n-5)%2Cn%3D0%2C6)

    und das Endergebnis stimmt nicht, nach der Formel ist es 0.59326171875,

    wenn ich für 1-0.75 0.45 einsetze, ist es 0.87802734375.

    In meinem Sprachgebrauch ist das "unbrauchbar".


  • Mod

    Was soll dieser Müll, den du da in WA eingetippt hast, mit meinem Beitrag (oder sonst irgendwas) zu tun haben? Du hast weder meine Beiträge noch irgendeinen der Links gelesen und setzt stattdessen wild Zahlen in Formeln ein, ohne sie zu verstehen. Was bedeutet N? Was machst du stattdessen damit? Das erinnert leider sehr an das Klischee des Grundschülers, der immer alle Zahlen in einer Textaufgabe addiert und hofft, dass das schon stimmt.

    Wenn du sowieso nicht liest, brauche ich auch nichts zu schreiben. Habe ich vor langer Zeit schon festgestellt, aber ich wollte mal probieren, ob du reifer geworden bist und habe spaßeshalber geantwortet. Leider eher das Gegenteil.

    PS: Als ein letzter Gefallen: 0.533935546875 ist exakt, oder 2187/4096 wenn dir das besser gefällt.



  • @SeppJ sagte in Mathe, Stochastik, zwei Spieler spielen wiederholt eine Runde:

    PS: Als ein letzter Gefallen: 0.533935546875 ist exakt, oder 2187/4096 wenn dir das besser gefällt.

    Siehst du, geht doch.

    Manche Leute sitzen auf einem hohen Ross und bemerken gar nicht, dass man auch nach unten schauen kann. 😉

    Soll heißen: So etwas wie "Argumentum ad hominem"/"Grundschulniveau" kann man sich doch sparen ... Der nächste kommt an und behauptet, ja, die Primfaktorzerlegung konnte ich ja schon im Kindergarten.



  • Was wäre denn, wenn ich nun behaupten würde,

    0.533935546875 sei falsch und

    0.5661862967491151 (also 56%, nicht 53%) sei die genaue Wahrscheinlichkeit für das Ende des Spiels nach 6 Runden?

    Spoiler:

    public class Wahr {
        public static void main(String[] args) {
            System.out.println("n=05: " + w(0, 0, 0, 15, 9, 20, 5));
            System.out.println("n=06: " + w(0, 0, 0, 15, 9, 20, 6));
            System.out.println("n=07: " + w(0, 0, 0, 15, 9, 20, 7));
        }
    
        public static double w(int deep, int w1, int w2, int p1, int p2, int n, int maxDeep) {
            if (deep > maxDeep) {
                return 0;
            }
            if (w1 == 5 || w2 == 5) {
                return 1;
            }
            double f = 1.0 / (n * n);
            double w0 = 0;
            w0 += ((n - p1) * (n - p2)) * f * w(deep + 1, w1, w2, p1, p2, n, maxDeep);
            w0 += (p1 * (n - p2)) * f * w(deep + 1, w1 + 1, w2, p1, p2, n, maxDeep);
            w0 += ((n - p1) * p2) * f * w(deep + 1, w1, w2 + 1, p1, p2, n, maxDeep);
            w0 += (p1 * p2) * f * w(deep + 1, w1 + 1, w2 + 1, p1, p2, n, maxDeep);
            return w0;
        }
    }
    


  • @omggg sagte in Mathe, Stochastik, zwei Spieler spielen wiederholt eine Runde:

    deshalb kann @Schlangenmensch und Du mir Blödsinn erzählen ("merkt der ja eh nicht ..."). 😞

    Wo habe ich Blödsinn geschrieben? Ich habe nur den Fall betrachtet, das Spieler 2 ein Spiel gewinnt und Spieler 1 verliert oO

    Und, @SeppJ hat logisch hergeleitet, dass N=5 Spiele nicht ausreichen können, und bei N=6 Spieler 1 ausreicht, um über 50 Prozent zu kommen. Und nur darauf bezieht sich die 53%

    Ich komme für eine genaue Wahrscheinlichkeit auf 0,6031, denn du muss den Fall hinzuaddieren, dass Spieler 2 6 aus 6 gewinnt (0.0083), und das Spieler 2 5 aus 6 gewinnt (0.0609).

    Da sich Gewinne gegenseitig nicht ausschließen sollten die Einzelwahrscheinlichkeiten unabhängig voneinander sein.



  • Danke erst mal,

    @Schlangenmensch sagte in Mathe, Stochastik, zwei Spieler spielen wiederholt eine Runde:

    denn du muss den Fall hinzuaddieren, dass Spieler 2 6 aus 6 gewinnt (0.0083), und das Spieler 2 5 aus 6 gewinnt (0.0609).

    Jaein ... Spieler 2 (oder Spieler 1) kann doch gar nicht 6 aus 6 gewinnen, da das Spiel vorher beendet wäre...

    @Schlangenmensch sagte in Mathe, Stochastik, zwei Spieler spielen wiederholt eine Runde:

    Da sich Gewinne gegenseitig nicht ausschließen sollten die Einzelwahrscheinlichkeiten unabhängig voneinander sein.

    Und wie kann ich das erreichen?



  • Es könnte jedoch die Hälfte der Rechenzeit eingespart werden durch einfaches Pruning:

    public class Wahr {
        public static void main(String[] args) {
            System.out.println("n=05: " + w(0, 0, 0, 15, 9, 20, 5));
            System.out.println("n=06: " + w(0, 0, 0, 15, 9, 20, 6));
            System.out.println("n=07: " + w(0, 0, 0, 15, 9, 20, 7));
        }
    
        public static double w(int deep, int w1, int w2, int p1, int p2, int n, int maxDeep) {
            if (deep >= maxDeep) {
                return w1 == 5 || w2 == 5 ? 1 : 0;
            }
            if (w1 == 5 || w2 == 5) {
                return 1;
            }
            double f = 1.0 / (n * n);
            double w0 = 0;
            w0 += ((n - p1) * (n - p2)) * f * w(deep + 1, w1, w2, p1, p2, n, maxDeep);
            w0 += (p1 * (n - p2)) * f * w(deep + 1, w1 + 1, w2, p1, p2, n, maxDeep);
            w0 += ((n - p1) * p2) * f * w(deep + 1, w1, w2 + 1, p1, p2, n, maxDeep);
            w0 += (p1 * p2) * f * w(deep + 1, w1 + 1, w2 + 1, p1, p2, n, maxDeep);
            return w0;
        }
    }
    


  • @omggg Die Frage war doch, wie wahrscheinlich ist es in 6 Spielen mindestens 5 mal zu gewinnen. Dafür muss du alle möglichen Varianten betrachten, die 5 Siege beinhalten. Die Frage war nicht, wie wahrscheinlich ist es exakt 5 mal zu gewinnen.

    @omggg sagte in Mathe, Stochastik, zwei Spieler spielen wiederholt eine Runde:

    Und wie kann ich das erreichen?

    Wobei? Die Frage verstehe ich gerade nicht, habe ich noch nicht genug Kaffee für getrunken.



  • 🤔 Für hierauf aufbauende Folgeberechnungen ist, "wird schon so ungefähr richtig sein", immer schlecht ... nicht umsonst gibt es doch genaue Rundungs- und Fehleregeln usw.

    Aber vielleicht ist dieses Wissen auch nur echten Mathematikern vorbehalten, und der bin ich ja nicht. 🤷♂


Log in to reply