Page 66 - Activités algorithmiques avec Python en spécialité Mathématiques
P. 66

 Thème : combinatoire & probabilités
 TI-83 Premium CE Edition Python TI-82 Advanced Edition Python
 Niveau : spécialité maths Terminale
   La combinatoire des parties
 L. DIDIER & R. CABANE
  Objectif 3 : une combinaison au hasard
 Pour tirer une partie de k éléments d’un ensemble donné (ici décrit par une liste L), nous pouvons aussi procéder de manière récursive. S’il s’agit de tirer une partie vide (k=0), c’est immédiatement réglé.
Sinon, on tire au hasard un
élément de L. Ce choix est
effectué par l’instruction randint(0,len(L)-1) ;
puis on le retire de L (grâce à l’appel L.pop).
 Si L est une liste comme [2,3,5],
L.pop(1) fait deux choses :
– retirer le deuxième élément de L
Si L est une liste, l’appel sorted(L) renvoie une liste triée ayant les mêmes éléments que L.
 – renvoyer cet élément (ici, 3).
 Il ne reste plus qu’à tirer k-1 éléments de la liste restante, ce que est réalisé par l’appel récursif combalea(k-1,L).
Pour fournir la réponse, on met l’élément tiré au hasard en tête (ce que fait l’instruction [ch]+K) puis on trie le tout (appel de la fonction sorted) pour éviter de présenter comme différentes des réponses ne se distinguant que par l’ordre.
Une fois que l’idée est formulée, il n’y a aucune difficulté à reprendre l’algorithme et à le programmer de manière itérative (non récursive) : on accumule de proche en proche les éléments tirés (au hasard) de L dans une liste C initialement vide ; il ne reste plus qu’à renvoyer cette liste, triée.
    64
 Ce document est mis à disposition sous licence Creative Commons
    © Texas Instruments 2021 / Photocopie autorisée
         












































































   64   65   66   67   68