Mathe, Stochastik, zwei Spieler spielen wiederholt eine Runde


  • Mod

    Wenn ich so darüber nachdenke, könnte man das wegen der kleinen Zahlen wesentlich vereinfachen, so dass das doch locker in der Schule möglich wäre. Für die Schüler, die kreativ über das Problem nachdenken, anstatt das auf die harte Tour allgemein zu lösen. Denn die allgemeine Lösung ist viel zu schwer für die Schule. Aber eine Ereigniszahl von 5 bei hohen Wahrscheinlichkeiten mit nur 2 Spielern und die Fragestellung mit den 50% machen alles viel einfacher, wenn man sich nur darauf beschränkt.

    Meine Erklärung auf Schulniveau, gegeben, dass sie entweder die Binomialverteilung kennen (eine der einfachsten Verteilungen, daher können sie das kennen), oder mittels Bildchen eine Binomialverteilung mit N<10 malerisch berechnen können (was auch realistisch ist, das sind nicht sooo viele Pfade, und die meisten kann man sogar sofort abbrechen, wenn 5 Siege unmöglich sind):

    • Wenn Spieler 1 über 50% kommt, dann ist das ausreichend, dass dann auch beide zusammen über 50% sind
    • 75% ist schon recht wahrscheinlich, die Grenze, wo man über 50% ist, wird wohl so zwischen 5 und 10 liegen.
    • Probieren wir mal die Mitte N=7 aus (mittels Binomialverteilung oder Bildchen). Wir kommen sogar auf >75%!
    • Das war schon viel zu viel, nehmen wir mal 6: 53%!
    • Also ist man bei N=6 garantiert über 50%. Bei N=4 kann man logisch gesehen gar nicht 5 Siege haben, wir müssen also nur noch gucken, ob wir vielleicht bei N=5 schon fertig sind.
    • Für 5 Siege bei Spieler 1 bei 5 Versuchen ermitteln wir ca. 23.7% (Da N=5 und wir 5 Siege suchen, müssen wir nur 0.75 hoch 5 nehmen)
    • Für 5 Siege bei Spieler 2 bei 5 Versuchen ermitteln wir ca. 1.8% (ebenso einfach)
    • Es reicht, wenn Spieler 1 oder Spieler 2 5 Siege hat. Einfache Kombinatorik sollten die Schüler kennen. Das gibt P(egal wer = 5) = P(Spieler 1 = 5) + P(Spieler 2 = 5) - P(beide = 5). Wir brauchen gar nicht weiter über den letzten Term nachdenken, denn schon die ersten beiden Terme geben uns nur gut 25%, also gar keine Frage, dass das Gesamtergebnis weit unter 50% sein wird.
    • Die Antwort ist daher 6.

    Das ist doch schon sehr viel einfacher als die Antwort auf die Frage, was die kumulative Wahrscheinlichkeit P(N,X,p1,...,pM)P(N, X, p_1, ..., p_M) von MM Spielern mit Siegwahrscheinlichkeiten p1p_1 bis pMp_M für eine gegebene Siegeszahl XX und Rundenzahl NN ist 😉

    Da musste ich jetzt zugegebenermaßen 30 Minuten darüber nachdenken, bis ich diesen Weg mit dieser Erklärung hatte (und ich denke, ich bin etwas erfahrener als der typische Abiturient). Aber in der Schule wäre ich auch die Sorte Schüler gewesen, der niemals auf diesen Weg gekommen wäre, und stattdessen spontan die Multinomialverteilung hergeleitet hätte. Was wer weiß wie schwer gewesen wäre.

    Als Prüfungsaufgabe daher denkbar mies, aber als kreative Aufgabe zur Abwechselung interessant, die einem zeigt, dass man nicht immer unbedingt alles mit Gewalt exakt berechnen braucht. Ich würde aber vorher die Wahrscheinlichkeiten (und Spieleranzahl?) anpassen. Hier war es eigentlich gar keine Frage mehr, dass das Ergebnis 6 sein würde, sobald man weiß, dass Spieler 1 bei 6 Versuchen auf 53% kommt. Man könnte einen guten Spieler mit 75% haben, und 10 schlechte mit 45%. Das ist interessanter. Oder gar 20 schlechte, weil man dann im letzten Schritt sogar die kombinatorischen Korrekturterme berücksichtigen muss (könnte aber zu schwer sein, weil man sich an dem Term auch tot rechnen kann).


  • Gesperrt

    Danke @SeppJ , nun hab ich es auch verstanden. 😅

    75 % für Spieler 1 ist vielleicht auch etwas hoch gegriffen... Interessanter bzw. "weniger vorhersagbar" wird es schon bei ca. 30 und 40 % für die beiden Spieler... oder bei > 2 Spielern.

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

    Jedenfalls mal etwas anderes als Nullstellen bestimmten. 🙂


  • 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.


  • Gesperrt

    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.


  • Gesperrt


  • 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.


  • Gesperrt

    @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. 😃


  • Gesperrt

    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.


  • Gesperrt

    @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. 🤷♂


  • Gesperrt

    @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.


  • Gesperrt

    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.


  • Gesperrt

    @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.


  • Gesperrt

    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.


  • Gesperrt

    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?


  • Gesperrt

    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;
        }
    }
    

Anmelden zum Antworten