Mathe, Stochastik, zwei Spieler spielen wiederholt eine Runde


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


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


  • Gesperrt

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



  • @omggg Nein, hier geht es nicht um "wird so ungefähr richtig sein". Es gibt bei 6 Spielen zwei Möglichkeiten die ersten 5 Spiele zu gewinnen: Man gewinnt die ersten 5 und verliert das 6. oder man gewinnt alle 6. Beide Wahrscheinlichkeiten müssen für 5 aus 6 mit betrachtet werden, auch wenn du bei einem Experiment nach 5 Siegen aufhören könntest.


  • Gesperrt

    🙈 Ich glaube, ich habe den Fehler inzwischen selber gefunden ...

    Da 75 % + 45 % größer als 1 ist, schließen sich die Ereignisse nicht gegenseitig aus (sind nicht mutually exclusive) ... und damit dürfen sie auch nicht addiert werden:

    https://math.stackexchange.com/questions/2636056/probability-for-sum-of-events-greater-than-1

    Das heißt, mein Ansatz (oder meine Ansätze) wird vermutlich falsch sein, weil ich in den Methoden Wahrscheinlichkeiten addiere.

    Das war die gute Nachricht. Die schlechte ist, ich weiß nicht, wie das anders geht. Ich leg's dann mal auf Eis.



  • @omggg Ich glaube, du hast die Antwort falsch verstanden. Es geht nicht darum das man Wahrscheinlichkeiten dann überhaupt nicht addieren kann. Da steht nur, das die Wahrscheinlichkeit, das Spieler 1 gewinnt, oder Spieler 2 gewinnt, nicht die Addition der Einzelwahrscheinlichkeiten ist (die ja in deinem Fall größer 1 wäre).


  • Gesperrt

    @Schlangenmensch Dennoch, mit der Variante aus https://www.c-plusplus.net/forum/topic/354643/mathe-stochastik-zwei-spieler-spielen-wiederholt-eine-runde/29 komme ich nicht auf das Ergebnis von https://www.c-plusplus.net/forum/topic/354643/mathe-stochastik-zwei-spieler-spielen-wiederholt-eine-runde/16 (0.533935546875), und ich weiß nicht, ob dies als absolut richtig betrachtet werden kann, weil @SeppJ einfach nur geschrieben hat, dass es lediglich genau sei, und weil es mir spanisch vorkommt, dass das Ereignis "Spieler 2 gewinnt, aber Spieler 1 nicht" nicht explizit auftaucht. Das sollte doch dabei sein?


  • Gesperrt

    Hmmm, auch Monte-Carlo bestätigt die 0.533935546875 nicht direkt ... Es sagt, durchschnittlich sei nach 6,65 Runden Schluss:

    import java.util.ArrayList;
    import java.util.IntSummaryStatistics;
    import java.util.List;
    
    public class Wahr {
        public static void main(String[] args) {
            System.out.println("n=6: " + w(0, 0, 0, 15, 9, 20, 6));
            monteCarlo(15, 9, 20, 6);
        }
    
        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;
            w0 += (n - Math.max(p1, p2)) * 1.0 / n * w(deep + 1, w1, w2, p1, p2, n, maxDeep);
            w0 += (Math.max(p1, p2) - Math.min(p1, p2)) * 1.0 / n * w(deep + 1, w1 + 1, w2, p1, p2, n, maxDeep);
            w0 += Math.min(p1, p2) * 1.0 / n * w(deep + 1, w1 + 1, w2 + 1, p1, p2, n, maxDeep);
            return w0;
        }
    
        public static void monteCarlo(int p1, int p2, int n, int max) {
            List<Integer> endsAfter = new ArrayList<>();
            for (int j = 0; j < 10000; j++) {
                int wins1 = 0;
                int wins2 = 0;
                for (int i = 0; i < 100; i++) {
                    int r = (int) (Math.random() * n);
                    if (r < Math.min(p1, p2)) {
                        wins1++;
                        wins2++;
                    } else if (r < Math.max(p1, p2)) {
                        wins1++;
                    }
                    if (wins1 == 5 || wins2 == 5) {
                        endsAfter.add(i + 1);
                        break;
                    }
                }
            }
            IntSummaryStatistics iss = endsAfter.stream().mapToInt(Integer::intValue).summaryStatistics();
            System.out.println(iss);
            long count1 = endsAfter.stream().filter(i -> i == max).count();
            long count2 = endsAfter.stream().filter(i -> i != max).count();
            System.out.println(count1 + " " + count2);
            System.out.println(1.0 * count1 / count2);
        }
    }
    

    Also los ... wo ist der Wurm?

    Bestimmt ist Zeile 49 falsch. 🤒



  • Ich denke der Wurm wird in der Hauptsache darin liegen, dass du nicht weiß was du tust.

    In diesem und in zwei weiteren Foren kursiert eine Formel, die das gewünschte berechnen soll. Mangels deiner Kenntnisse in allen MINT Disziplinen kannst du das nichtmal verifizieren.

    Wegen anderer Konzepte - Dunning-Kruger Effekt bist du nicht in der lage zu sehen, wie schlecht deine Aussagen und Schlussfolgerungen sind.

    Es dient hier ausschließlich dazu die Leute im Forum zu nerven. Oder für einen kurzen Moment so zu tun, als hätte man jemanden zu sprechen. Denn wenn du in deiner Realität so auftrittst, wie du dich in den hinderten Foren tust, dann wirst du verdammt wenig Freunde haben.

    Gleichzeitig ist deine Funktion nur zusammengewürfelt irgendwelche Operationen, die wenn ich dich darum bitten würde deine Vorgehensweise in Bezug auf das hier postete zu erkäutern, einfach scheitern wird, weil es nix mit der gegeben Aufgabenstellung zu tun hat.

    My two cents.


  • Gesperrt

    Geh weg.


  • Gesperrt

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

    Dünning-Krüger Effekt

    Das Problem ist, dass von uns beiden ich nicht der Dumme bin. 😢 Also, was soll das Getrolle? Du hast obendrein auch ein unnormales Mitteilungsbedürfnis ... Das solltest du mal psychologisch aufarbeiten lassen. Schlechte Kindheit gehabt?


  • Mod


Anmelden zum Antworten