Seite 1 von 1

Binominalverteilung (3er Pasch bei 6 Würfeln)

Verfasst: Freitag 30. Dezember 2022, 13:57
von mariomueller
Hallo zusammen,

um die Häufigkeit eines 3er-Pasch bei 6 Würfeln zu ermitteln, verwende ich die Binomialverteilung:

Code: Alles auswählen

import scipy.special

n = 6
k = 3
p = 1/6

ergebnis = scipy.special.binom(n, k) * p**k * (1-p)**(n-k)
print(f"Wahrscheinlichkeit 3er z.B. '555':\t  {ergebnis}")
print(f"Wahrscheinlichkeit aller 3er Pasch:\t  {ergebnis * 6}")
Ergebnis:

Code: Alles auswählen

Wahrscheinlichkeit 3er z.B. '555':	  0.05358367626886146
Wahrscheinlichkeit aller 3er Pasch:	  0.32150205761316875
Das scheint zu stimmen. Ich habe ein Youtube-gefunden, in dem die WK für einen Zweierpasch berechnet wurde. Das Ergebnis aus dem Youtube ist identisch mit meinem Code.
Mit anderen Worten: Der Code scheint korrekt zu sein

Trotzdem wollte ich mal Gegenrechnen.
Ich verwende hierzu das kartesiche Produkt. Bei 6 Würfeln sind das 6^6 = 46656 verschiedene Möglichkeiten, wie die Würfel fallen können .
Dann suche such alle 5er-Pasch (ich hätte auch 333 oder nach 666 suchen können)

Code: Alles auswählen

import itertools
products = list(itertools.product("123456", repeat=6))
# products = list(itertools.product("123", repeat=4))

def convertTuple(tup):
    str = ''.join(tup)
    return str

kartesisches_produkt = len(list(products))
# print(f"kartesisches_produkt:\t  {kartesisches_produkt}")
treffer_pasch = 0
# Print 
for tup in list(products): 
  tup = tuple(sorted(tup))  
  # print(tup)
  tup_as_string = convertTuple(tup)
  # print(f"tup_as_string:\t  {tup_as_string}")
  if '555' in tup_as_string:
    treffer_pasch += 1
    
print(f"treffer_pasch:\t  {treffer_pasch}")
print("Treffer geteilt durch Gesamtzahl", (treffer_pasch / kartesisches_produkt))
print("multiplizier mit 6 Würfelseiten: ", (treffer_pasch / kartesisches_produkt) * 6)
Ergebnis:

Code: Alles auswählen

treffer_pasch:	  2906
Treffer geteilt durch Gesamtzahl 0.062285665294924554
multiplizier mit 6 Würfelseiten:  0.37371399176954734
Hat jemand eine Idee, warum ich mit dem loop über das kartisische Produkt das Ergebnis 0.37371399176954734 erhalten.
Mit der Binominalverteilung aber 0.32150205761316875?

Wo liegt mein Denkfehler?


Danke, viele Grüße Mario

Re: Binominalverteilung (3er Pasch bei 6 Würfeln)

Verfasst: Freitag 30. Dezember 2022, 14:34
von __blackjack__
@mariomueller: Wie ist denn Deine Definition von Pasch hier? Mir scheint ``if '555' in tup_as_string`` ist als Bedingung falsch. Oder ist beispielsweise "152535" *kein* Pasch mit drei 5en?

Edit: Ups, ich habe das sortieren übersehen. Und wie oft da sinnlos Daten kopiert werden. Aaaalter…

Re: Binominalverteilung (3er Pasch bei 6 Würfeln)

Verfasst: Freitag 30. Dezember 2022, 15:07
von grubenfox
Zählt die Binominalverteilung jetzt genau die 3er Pasche? Also '555' ist ein Treffer, aber '5555' nicht. Der Programmcode zählt '5555' jedenfalls auch als Treffer.

Re: Binominalverteilung (3er Pasch bei 6 Würfeln)

Verfasst: Freitag 30. Dezember 2022, 15:12
von nezzcarth
Wie Grubenfox im Prinzip schon meinte: 0.32 inkludiert nur exakte Dreierpasche, 0.37 auch 3er, 4er, 5er und 6er Pasche.

EDIT:
siehe auch:

Code: Alles auswählen

In [1]: from itertools import product

In [2]: trials = list(trial for trial in product(range(1,7), repeat=6))

In [3]: sum(trial.count(5) == 3 for trial in trials) / len(trials) * 6
Out[3]: 0.3215020576131687

In [4]: sum(trial.count(5) >= 3 for trial in trials) / len(trials) * 6
Out[4]: 0.37371399176954734

Re: Binominalverteilung (3er Pasch bei 6 Würfeln)

Verfasst: Freitag 30. Dezember 2022, 15:14
von Manul
Kann es unabhängig davon sein, daß doppelte 3er-Paschs in beiden Ansätzen mehrfach gezählt werden?

Re: Binominalverteilung (3er Pasch bei 6 Würfeln)

Verfasst: Samstag 31. Dezember 2022, 08:43
von mariomueller
grubenfox hat geschrieben: Freitag 30. Dezember 2022, 15:07 Zählt die Binominalverteilung jetzt genau die 3er Pasche? Also '555' ist ein Treffer, aber '5555' nicht. Der Programmcode zählt '5555' jedenfalls auch als Treffer.
Super, Danke das wars.
Bin happy!

Re: Binominalverteilung (3er Pasch bei 6 Würfeln)

Verfasst: Samstag 31. Dezember 2022, 08:48
von mariomueller
nezzcarth hat geschrieben: Freitag 30. Dezember 2022, 15:12 Wie Grubenfox im Prinzip schon meinte: 0.32 inkludiert nur exakte Dreierpasche, 0.37 auch 3er, 4er, 5er und 6er Pasche.

EDIT:
siehe auch:

Code: Alles auswählen

In [1]: from itertools import product

In [2]: trials = list(trial for trial in product(range(1,7), repeat=6))

In [3]: sum(trial.count(5) == 3 for trial in trials) / len(trials) * 6
Out[3]: 0.3215020576131687

In [4]: sum(trial.count(5) >= 3 for trial in trials) / len(trials) * 6
Out[4]: 0.37371399176954734

Hi nezzcarth,

vielen Dank für Deinen Kommentar. Wie geschrieben, war der Fehler, dass ich auch 4er, 5er, 6er Pasch mitgezählt habe.
Würdest Du mir bitter erklären, was die beiden sum-Befehle machen, die Du verwendest?

Danke, viele Grüße Mario

Re: Binominalverteilung (3er Pasch bei 6 Würfeln)

Verfasst: Samstag 31. Dezember 2022, 11:09
von grubenfox
mariomueller hat geschrieben: Samstag 31. Dezember 2022, 08:43
grubenfox hat geschrieben: Freitag 30. Dezember 2022, 15:07 Zählt die Binominalverteilung jetzt genau die 3er Pasche? Also '555' ist ein Treffer, aber '5555' nicht. Der Programmcode zählt '5555' jedenfalls auch als Treffer.
Super, Danke das wars.
Bin happy!
@mariomueller und alle anderen die dieses lesen: Dann wünsche ich auch schon mal einen guten Rutsch und ein Jahr das ebenso 'happy' verläuft... :D