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}")
Code: Alles auswählen
Wahrscheinlichkeit 3er z.B. '555': 0.05358367626886146
Wahrscheinlichkeit aller 3er Pasch: 0.32150205761316875
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)
Code: Alles auswählen
treffer_pasch: 2906
Treffer geteilt durch Gesamtzahl 0.062285665294924554
multiplizier mit 6 Würfelseiten: 0.37371399176954734
Mit der Binominalverteilung aber 0.32150205761316875?
Wo liegt mein Denkfehler?
Danke, viele Grüße Mario