Maison >développement back-end >Tutoriel Python >Comment le produit cartésien peut-il générer des permutations avec des répétitions ?

Comment le produit cartésien peut-il générer des permutations avec des répétitions ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-21 21:52:38515parcourir

How Can Cartesian Product Generate Permutations with Repetitions?

Obtenir des permutations avec des répétitions à l'aide d'un produit cartésien

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn