Einführung
Beim Generieren von Permutationen aus einer Liste wird die Standardbibliothek itertools übersprungen Kombinationen, bei denen sich Elemente wiederholen. Um alle möglichen Permutationen zu erhalten, auch solche mit Wiederholungen, wird das kartesische Produkt verwendet.
Itertools-Permutationen
Die Funktion permutations() in itertools generiert Permutationen ohne Wiederholungen. Bei Würfelwürfen sind Kombinationen wie (1, 1) ausgeschlossen, bei denen auf beiden Würfeln die gleiche Zahl erscheint.
Kartesisches Produkt
Das kartesische Produkt zwischen „Zwei Mengen“ erstellt eine neue Menge, die alle geordneten Paare enthält, wobei das erste Element aus der ersten Menge und das zweite Element aus der zweiten Menge stammt. Beispielsweise ist das kartesische Produkt von {1, 2} und {3, 4} {(1, 3), (1, 4), (2, 3), (2, 4)}.
Kartesisches Produkt auf Würfelwürfe anwenden
Um alle möglichen Würfelwurfkombinationen mit Wiederholungen mithilfe des Kartesischen zu generieren Produkt:
import itertools x = [1, 2, 3, 4, 5, 6] dice_combinations = [p for p in itertools.product(x, repeat=2)]
Beispielergebnis
Die Ausgabe ist eine Liste von 36 geordneten Paaren, einschließlich Kombinationen wie (1, 1):
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6), (5, 1), (5, 2), (5, 3), (5, 4), (5, 5), (5, 6), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6)]
Zufälliger Würfelwurf
Ein zufälliger Würfelwurf kann sein erhalten Sie durch Auswahl eines Paares aus der kartesischen Produktliste:
import random random_roll = random.choice(dice_combinations)
Das obige ist der detaillierte Inhalt vonWie kann ein kartesisches Produkt Permutationen mit Wiederholungen erzeugen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!