Münzen



  • Ponto schrieb:

    Die Wahrscheinlichkeit, dass A gewinnt ist 1/3. B gewinnt mit einer Wahrscheinlichkeit von 2/3. Begründung bei Bedarf.

    bedarf besteht:

    #include <iostream>
    #include <ctime>
    using namespace std;
    
    int main()
    {
    	srand(time(0));
    	int spieler1 = 0;
    	int spieler2 = 0;
    	bool muenze[3]; // true = kopf
    	muenze[0] = rand() & 1;
    	muenze[1] = rand() & 1;
    	muenze[2] = rand() & 1;
    	for(int i = 0; i < 100000; i++)
    	{
    		while(true)
    		{
    			muenze[0] = muenze[1];
    			muenze[1] = muenze[2];
    			muenze[2] = rand() & 1;
    			if(muenze[0] && !muenze[1] && muenze[2])
    			{
    				spieler1++;
    				break;
    			}
    			else if(muenze[0] && muenze[1] && !muenze[2])
    			{
    				spieler2++;
    				break;
    			}
    		}
    	}
    	cout << "spieler1: " << spieler1 << " spieler2: " << spieler2;
    }
    

    ausgabe schrieb:

    spieler1: 50057 spieler2: 49943



  • int count_S1_wins = 0;
    			int count_S2_wins = 0;
    
    			for (int i = 0; i < 1000000; ++i)
    			{
    				int aktuellerWurf = 2;
    				int letzterWurf = 2;
    				int vorletzterWurf = 2;
    
    				const int Kopf = 0;
    				const int Zahl = 1;
    
    				int[] Spieler1Win = new int[3] {Kopf, Zahl, Kopf};
    				int[] Spieler2Win = new int[3] {Kopf, Kopf, Zahl};
    
    				Random rdm = new Random();
    
    				bool win = false;
    
    				while (!win)
    				{
    					aktuellerWurf = rdm.Next() % 2;
    					if ((aktuellerWurf == Spieler1Win[2]) && (letzterWurf == Spieler1Win[1]) && (vorletzterWurf == Spieler1Win[0]))
    					{
    						++count_S1_wins;
    						win = true;
    					}
    					if ((aktuellerWurf == Spieler2Win[2]) && (letzterWurf == Spieler2Win[1]) && (vorletzterWurf == Spieler2Win[0]))
    					{
    						++count_S2_wins;
    						win = true;
    					}
    					vorletzterWurf = letzterWurf;
    					letzterWurf = aktuellerWurf;
    				}
    			}
    			Console.WriteLine("Spieler 1 gewonnen: " + count_S1_wins.ToString());
    			Console.WriteLine("Spieler 2 gewonnen: " + count_S2_wins.ToString());
    			Console.Read();
    

    Bei mir kommt raus:

    Spieler 1 gewonnen: 340376
    Spieler 2 gewonnen: 659624
    

    Neescher



  • ... einfach mal:
    fresse halten



  • @Faker: Gilt besonders für dich...

    Bye, TGGC



  • der faker bist wohl eher du.
    denn wie ihr sicher alle wisst bin ich schon längst in der ubahn und nicht mehr work 😎



  • Auch wenn es vom Thema abweicht, wie kommst du von der U-Bahn aus ins Internet?

    So, und nun wieder back 2 Topic ⚠ !



  • borg schrieb:

    bedarf besteht:

    Ok: Zu Beginn des Spiels und solange nur Zahl geworfen wird, ist alles egal, da für beide Spieler keine Sequenz beginnt, die zum Erfolg führen kann. Sobald aber zum ersten mal Kopf geworfen wird, muss man überlegen. Nach dem ersten Kopf folgt mit 50% Wahrscheinlichkeit wieder Kopf. Nach zwei Kopf Würfen gewinnt aber immer Spieler B, da irgendwann eine Zahl kommt. Damit gewinnt B an dieser Stelle bereits mit 50%. Kommt eine Zahl geht es jedoch weiter.

    Wir haben an dieser Stelle eine Folge von Würfen, die nicht interessieren, dann Kopf und dann Zahl. Im folgenden Wurf kann mit 50% Kopf geworfen werden. Dann gewinnt Spieler A. Ausgehend vom ersten Kopf Wurf geschieht dies in 25% der Fälle. In den restlichen 25% wird nach dem ersten Kopf zweimal Zahl geworfen. Nach zwei Zahl Würfen beginnt jedoch das ganze Spiel von vorne und alles ist am Ausgangspunkt. Damit kann man die Wahrscheinlichkeit PB für den Gewinn von B ausrechnen:

    PB = 0.5 + 0.25PB

    Der erste Summand spiegelt die 50% des sicheren Gewinns nach zweimal Kopf und der zweite Summand steht für das ganze Spiel von vorne, was in 25% der Fälle auftritt.

    Für A gilt analog:

    PA = 0.25 + 0.25PA

    Beide Gleichungen kann man einfach auflösen, so dass PB = 2/3 und PA = 1/3 gilt.



  • kann mir einer sagen wie die fragestellung lauten müsste für das was ich programmiert hab? 😃

    ich seh nicht wo es abweicht.



  • Es werden 3 Münzen geworfen, bei Kombination x gewinnt A, bei y B. Bei einer anderen Kombination wird neu geworfen.

    Bye, TGGC



  • Man kann sich denke ich leicht einen Automaten aufstellen, der sozusagen zufällig zwischen Zuständen hin- und herwandert. Dann kann man zählen, wer mehr Terminalzustände hat: 1. oder 2. Spieler. So kann man es sich graphisch wohl recht gut veranschaulichen.



  • TGGC|_work schrieb:

    Es werden 3 Münzen geworfen, bei Kombination x gewinnt A, bei y B. Bei einer anderen Kombination wird neu geworfen.

    Bye, TGGC

    ich werfe aber immer nur eine münze neu.



  • @borg: um das richtige Gewinnverhältnis zu erhalten, musst du die for-Schleife drei zeilen früher beginnen... (die zuweisungen am anfang müssen in der schleife stehen) sobald der eine gewonnen hat (der mit 2/3) hat der andere ne 50%ige Chance zu gewinnen, wenn die letzten beiden würfe ins neue experiment mitübernommen werden...

    mfG D1B



  • Sorry, hab die letzte Anwort (bzw. Frage) total verpeilt. Richtig wäre:

    Wirf eine Münze n-mal, für jedes Auftreten der Kombination x bekommt A einen Punkt, für jedes y bekommt B einen Punkt.

    (Dein Programm fängt nicht an neu zu werfen, sondern benutzt die letzten beiden Würfe, mit denen jemand gewinnt als Anfang für die neue Serie)

    Bye, TGGC



  • doppelpost



  • TGGC|_work schrieb:

    (Dein Programm fängt nicht an neu zu werfen, sondern benutzt die letzten beiden Würfe, mit denen jemand gewinnt als Anfang für die neue Serie)

    danke, hab ich verpeilt.



  • Ich habe mal versucht, dass ganze als Diffusionsmodell zu implementieren. (Sollten Fehler enthalten sein, würde ich mich über entsprechende Hinweise freuen. Ich bin gerade erst dabei, mich in die Thematik einzuarbeiten. *shy*)

    Hier der MatLab-Code:

    function coin()
    %  A perfect coin is tossed until A or B wins: 
    %  A wins if H T H (head tail head)
    %  B wins if H H T (head head tail)
    %
    % states:  H     T     HH    HT    TH    TT    HHH   HTT   THH   THT   TTH   TTT   HTH   HHT         
    % 3 transient classes:
    %	 H     T
    %   HH    HT    TH    TT
    % and
    %   HHH   HTT   THH   THT   TTH   TTT
    %
    % 2 recurrent and absorbing states
    % HTH
    % HHT
    
    % transition probability matrix:
    P = [...                                                                                    
    % H     T     HH    HT    TH    TT    HHH   HTT   THH   THT   TTH   TTT   HTH   HHT         
      0     0     0.5   0.5   0     0     0     0     0     0     0     0     0     0           
      0     0     0     0     0.5   0.5   0     0     0     0     0     0     0     0           
      0     0     0     0     0     0     0.5   0     0     0     0     0     0     0.5         
      0     0     0     0     0     0     0     0.5   0     0     0     0     0.5   0           
      0     0     0     0     0     0     0     0     0.5   0.5   0     0     0     0           
      0     0     0     0     0     0     0     0     0     0     0.5   0.5   0     0           
      0     0     0     0     0     0     0.5   0     0     0     0     0     0     0.5         
      0     0     0     0     0     0     0     0     0     0     0.5   0.5   0     0           
      0     0     0     0     0     0     0.5   0     0     0     0     0     0     0.5         
      0     0     0     0     0     0     0     0.5   0     0     0     0     0.5   0           
      0     0     0     0     0     0     0     0     0.5   0.5   0     0     0     0           
      0     0     0     0     0     0     0     0     0     0     0.5   0.5   0     0           
      0     0     0     0     0     0     0     0     0     0     0     0     1     0           
      0     0     0     0     0     0     0     0     0     0     0     0     0     1    ];     
    % initial distribution = distribution after one toss
    Z = [...
      0.5   0.5   0     0     0     0     0     0     0     0     0     0     0     0];
    
    % distribution after 2 tosses
    twoTosses = Z * P
    
    % distribution after 3 tosses
    threeTosses = Z * P^2
    
    % distribution after 1000 tosses,  equals  bounding probability
    boundingProbability = Z * P^1000
    

    Die Ausgabe sieht dann so aus:

    twoTosses = 
             0         0    0.2500    0.2500    0.2500    0.2500         0		0         0         0         0         0         0         0
    
    threeTosses =
             0         0         0         0         0         0    0.1250    0.1250    0.1250    0.1250    0.1250    0.1250    0.1250    0.1250
    
    boundingProbability =
             0         0         0         0         0         0    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    [b]0.3333[/b]    [b]0.6667[/b]
    

    Hier sieht es also auch so aus, dass mit 66%iger Wahrscheinlichkeit B gewinnt.

    Für eine geschlossene Lösung habe ich dann obigen Code noch um folgende Zeilen ergänzt:

    % closed solution
    
    % decomposition of transition matrix P
    % transition matrix Q for transient states
    Q = P(1:12,1:12);
    % transition matrix R for recurrent states
    R = P(1:12,13:14)
    
    % initial distribution
    Z2 = Z(1:12); 
    
    % identity matrix size of Q
    I = eye(12,12);
    
    % Probability of ending in state HTH vs. HHT
    prob = Z2 * (I-Q)^-1 * R;
    
    % mean number of tosses until player wins HTH vs. HHT
    tosses = (Z2 * inv(I-Q) * inv(I-Q)* R)./ prob
    

    Diese Ergänzungen erzeugten folgende Ausgabe:

    prob =
    
        0.3333    0.6667
    
    tosses =
    
        4.3333    5.3333
    

    Die Wahrscheinlichkeiten sind also genauso wie im genäherten Fall: in 66% der Fälle gewinnt B. Allerdings war die mittlere Anzahl an Würfen bis zum Sieg etwas überraschend: Obwohl Spieler A nur in 33% aller Fälle gewinnt, braucht er in diesen Fällen nur ca. 4 Würfe. 😮



  • Nein das ist überhaupt nicht verblüffend, denn in den langen Serien, die mit A's Kombination enden, hat B ja schon vorher gewonnen.

    Bye, TGGC



  • TGGC|_work schrieb:

    Nein das ist überhaupt nicht verblüffend, denn in den langen Serien, die mit A's Kombination enden, hat B ja schon vorher gewonnen.

    Bye, TGGC

    Nein, in diesem Modell endet jede Serie sobald einer der beiden Spieler gewonnen hat, danach wird neu gestartet. Es kann also in einem trial nur A oder B gewinnen.



  • Ja und? Darum hat A ja grad wenige lange Gewinnserien.

    Bye, TGGC



  • TGGC|_work schrieb:

    Ja und? Darum hat A ja grad wenige lange Gewinnserien.

    Bye, TGGC

    Von "Gewinnserien" war bislang nicht die Rede. 😕

    Die 4.33 bedeutet nicht, dass A durchschnittlich 4.33 mal hintereinander gewinnt, sondern, dass in den Fällen in denen A gewinnt die Münze im Mittel 4.33 mal geworfen wurde, während wenn B gewinnt im Schnitt 5.33 mal geworfen wurde.

    Bei oberflächlicher Betrachtung erscheint es also so, als ob A früher gewinnt, obwohl er aber seltener gewinnt. Das empfand ich als kontra-intuitiv.

    Allerdings kann ein Vergleich der Verteilungen der mittleren Wurfanzahl von A und B diesen Irrtum recht schnell aufklären, denn für jede Wurfanzahl ist P(A) ≤ P(B).


Anmelden zum Antworten