Wie berechnet man alle Möglichkeiten mit Python?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Die falsche Klammerung bei sum hast du ja schon selbst behoben.

Allerdings baut der Ausdruck temporär eine Liste mit allen Würfen auf, nur um sie nachher zu zählen. Das ist unnötig und bei einer Million Würfen ineffizient. So geht es einfacher:

count = sum( sum(x)==26 for x in 
    itertools.product(range(1,7), repeat=6)
           )

Die innere Sequenz von Booleans wird vom äußeren sum() unmittelbar verarbeitet. Da stapeln sich keine Werte an.

Um alle Möglichkeiten zu berechnen, bei denen die Summe der Augenzahlen von 6 Würfeln mit jeweils 6 Seiten genau 26 ist, kannst du eine verschachtelte Schleife in Python verwenden. Hier ist ein einfacher Code, der dies tut:

import itertools

dice_count = 6

dice_sides = 6

target_sum = 26

# Erstelle eine Liste mit allen möglichen Würfelwürfen (1-6) für jeden Würfel

dice = [range(1, dice_sides + 1)] * dice_count

# Erzeuge alle möglichen Kombinationen der Würfelwürfe

combinations = list(itertools.product(*dice))

# Filtere die Kombinationen, bei denen die Summe der Augenzahlen gleich der Zielsumme ist

valid_combinations = [c for c in combinations if sum(c) == target_sum]

# Gebe die Anzahl der gültigen Kombinationen und die Kombinationen selbst aus

print(f"Anzahl der gültigen Kombinationen: {len(valid_combinations)}")

print(valid_combinations)

Coole Aufgabe, hab keine Python Umgebung zum Testen. Ich würde sowas bauen mit Listen und schleifen.

wuerfel1= (1,2,3,4,5,6)

wuerfel2= (1,2,3,4,5,6)

usw.

Dann

For w1 in wuerfel1{

For w2 in wuerfel2 {

Summe = (int) wuerfel1(w1) + (int) wuerfel2(w2) +..

If Summe ==26 print "Würfel1 =", wuerfel1(w1), "Würfel2(w2),...}}}}

Woher ich das weiß:Hobby

Zanywane 
Fragesteller
 23.03.2023, 20:39

Danke, das war auf jeden Fall ein guter Ansatz!
Ich hab meine Variante doch auch noch zum laufen gebracht:

count = len([x for x in itertools.product(range(1,7), repeat=6) if sum(x) == 26])

result = count / (6 ** 6)

print(result)

0