Rapport de TP#
Écrivez dans les cellules suivantes des fonctions permettant de :
lister les arrangements (de type tuple) de k éléments parmi un ensemble S
tirer un arrangement de k parmi un ensemble S de façon uniforme
lister les combinaisons (de type Set) de k éléments parmi un ensemble S
tirer une combinaison de k parmi un ensemble S de façon uniforme
Vous pouvez utiliser les algorithmes de votre choix et vous inspirer de ceux vus pendant la séance (sous-ensembles, produit cartésien, arbres binaires).
Décrivez ci-dessous les algorithmes utilisés :
écrivez ici
// Ecrire votre code ici
Quelques exemples pour tester votre code (à adapter / compléter en fonction de votre code)
Hand = Set(["Rouge","Bleue","Verte","Jaune"])
list(arrangements(Hand,2)) # la fonction arrangements est celle que vous devez écrire
# on vérifie qu'on obtient pareil que Sage
assert set(arrangements(Hand,2)) == set(tuple(a) for a in Arrangements(Hand,2))
assert all(set(arrangements(Hand,i)) == set(tuple(a) for a in Arrangements(Hand,i)) for i in range(5))
random_arrangement(Hand,2) # la fonction random_arrangement est celle que vous devez écrire
def distribution(L):
"""
Renvoie la distribution par nombre d'occurences d'une liste d'éléments
Input :
- une liste L d'éléments (non mutables)
Output: un dictionnaire comptant les occurences de chaque élément de la liste L
"""
d = {}
for el in L:
d[el] = d.get(el, 0) + 1
return d
# on vérifie que la répartition est uniforme
distribution([random_arrangement(Hand,2) for i in range(10000)])
list(combinaisons(Hand,2)) # la fonction combinaisons est celle que vous devez écrire
# on vérifie qu'on obtient pareil que Sage
assert set(combinaisons(Hand,2)) == set(Set(c) for c in Combinations(Hand,2))
assert all(set(combinaisons(Hand,i)) == set(Set(a) for a in Combinations(Hand,i)) for i in range(5))
random_combinaison(Hand,2) # la fonction random_combinaison est celle que vous devez écrire
# on vérifie que la répartition est uniforme
distribution([random_combinaison(Hand,2) for i in range(10000)])