Introduction
Lors de la génération de permutations à partir d'une liste, la bibliothèque itertools standard saute combinaisons où les éléments se répètent. Pour obtenir toutes les permutations possibles, y compris celles avec répétitions, le produit cartésien est utilisé.
Permutations Itertools
La fonction permutations() dans itertools génère des permutations sans répétitions. Dans le cas des lancers de dés, cela exclut les combinaisons comme (1, 1), où le même nombre apparaît sur les deux dés.
Produit cartésien
Le produit cartésien entre two sets crée un nouvel ensemble contenant toutes les paires ordonnées où le premier élément provient du premier ensemble et le deuxième élément provient du deuxième ensemble. Par exemple, le produit cartésien de {1, 2} et {3, 4} est {(1, 3), (1, 4), (2, 3), (2, 4)}.
Application du produit cartésien aux lancers de dés
Pour générer toutes les combinaisons possibles de lancer de dés avec des répétitions à l'aide du cartésien produit :
import itertools x = [1, 2, 3, 4, 5, 6] dice_combinations = [p for p in itertools.product(x, repeat=2)]
Exemple de résultat
Le résultat sera une liste de 36 paires ordonnées, y compris des combinaisons telles que (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)]
Lancer de dés aléatoire
Un lancer de dés aléatoire peut être obtenu en en sélectionnant une paire dans la liste de produits cartésiens :
import random random_roll = random.choice(dice_combinations)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!