Vous êtes sur la page 1sur 3

Système cyclique de dés

laurent.jospin.59@free.fr, http://jospin.lstl.fr

Lycée Saint-Louis, Paris

Toute fonction demandée ou introduite dans une question précédente peut (évidemment) être utilisée dans une
question ultérieure même si vous ne l’avez pas écrite. Il est (évidemment) possible d’introduire, en les programmant
et en expliquant leur rôle, des fonctions intermédiaires. La clareté des fonctions pourra être prise en compte dans la
notation, il est donc conseillé d’écrire les commentaires utiles à la compréhension des programmes non triviaux et de
bien choisir le noms des fonctions et des variables.
On considère dans ce sujet des dés équilibrés ayant un nombre variable de faces. On ne s’intéresse pas à savoir
si ces dés peuvent être physiquement construits. Les faces portent des numéros (entiers naturels). Un même numéro
peut apparaitre sur plusieurs faces.
On représente un dé par la liste ordonnée de ses faces, par exemple : [0, 2, 5] est un dé à 3 faces : 0, 2 et 5. Dans
les programmes cette même liste sera du type list de Python et appelé tableau dans le texte.

1 Etude d’un dé
1. Ecrire une fonction qui prend un tableau en argument représentant un dé et vérifie que c’est une représentation
correcte d’un dé, c’est-à-dire que le tableau est ordonné par ordre croissant. La fonction devra renvoyer le booléen
adéquat (type bool).

2. Soit A un dé, on note A son espérance, c’est-à-dire la moyenne de ses faces. Ecrire une fonction qui renvoie
l’espérance d’un dé en argument.

3. Ecrire une fonction qui donne la variance d’un dé. On rappelle que la variance est la moyenne des carrés des écarts
à l’espérance.

2 Relation entre les dés


Soit A et B deux dés, et a et b la valeur de leur face lors d’un lancer. On définit que A est battu par B et on note
A ≺ B si la probabilité que a < b et supérieure strictement à la probabilité que a > b. On pourra noter A ∼ B si les
probabilités sont égales.
On a ainsi : [0, 2, 5] ≺ [1, 2, 5] car parmi les 9 tirages possibles des deux dés, il y a 3 tirages favorables au premier
contre 4 favorables au second (et 2 égalités).

4. Montrer par un exemple simple que A ≺ B n’est pas équivalent à A < B.

5. Ecrire une fonction qui prend en argument deux dés et qui renvoie la probabilité que la face du premier dé soit
strictement inférieure à la face du second lors d’un tirage. Dans cette question, les deux dés peuvent avoir un nombre
différent de faces.

6. Ecrire une fonction est_battu_par qui prend en argument deux dés et qui renvoie un booléen indiquant si le
premier dé est battu par le second.

3 Transitivité d’un système de dé


Une relation ≺ sur un ensemble E est dite transitive si pour tout A, B et C dans E, A ≺ B et B ≺ C implique
A ≺ C.
On appelle système de dés un ensemble de dés ayant le même nombre de faces. On le représente numérique par
un tableau de dés.

7. On dit qu’un dé du système est le meilleur du système s’il bat tous les autres. Pour déterminer l’existence d’un tel
dé, on procède en deux passes :

1
Système cyclique de dés

– on parcourt une première fois le tableau et on détermine l’indice du meilleur dé en supposant qu’il existe sur le
principe d’une recherche de l’indice du maximum
– on parcourt une seconde fois le tableau et on vérifie si le dé retenu bat tous les autres dés
Justifier que le dé retenu après la première passe est le seul dé qui peut être le meilleur du système.

8. Ecrire une fonction qui renvoie l’indice du meilleur dé d’un système s’il existe, et None sinon.

9. Déterminer la complexité de la fonction précédente en fonction de n le nombre de dés et p le nombre de faces.

10. L’objectif est de déterminer si la relation est battu par est transitive sur le système de dés considéré. Pour cela, on
va appliquer l’algorithme suivant :
– déterminer si un dé bat tous les autres dans le système
– si c’est le cas, l’ôter du système puis recommencer jusqu’à ce qu’il ne reste qu’un seul dé (et renvoyer Vrai
alors)
– sinon, renvoyer Faux
Traduire l’algorithme précédent en une fonction qui prend en argument un système de dés et qui renvoie un
booléen indiquant si le système de dés est transitif. On prendra soin de ne pas produire d’effets de bord.

4 Extraction d’un sous-système cyclique de 3 dés


On dit qu’un système de 3 dés A, B et C est cyclique si A ≺ B ≺ C ≺ A (sur le principe du jeu shi fu mi :
feuille ≺ ciseau ≺ pierre ≺ feuille )

11. Ecrire une fonction qui renvoie, s’ils existent, trois dés d’un système de dés reçu en argument tel que le sous-
système constitué de ces 3 dés soit cyclique. On pourra renvoyer None s’il n’en existe pas.

5 Enumération des dés à p faces bornées par k


La liste des dés à 3 faces bornées par 3 peut s’énumérer ainsi : [0, 0, 0], [0, 0, 1], [0, 0, 2], [0, 0, 3], [0, 1, 1], [0,
1, 2], [0, 1, 3], [0, 2, 2], [0, 2, 3], [0, 3, 3], [1, 1, 1], [1, 1, 2], [1, 1, 3], [1, 2, 2], [1, 2, 3], [1, 3, 3], [2, 2, 2], [2, 2, 3],
[2, 3, 3], et [3, 3, 3].
Pour construire cette énumération, on va se baser sur le principe de la numération en base k + 1.

12. Ecrire une fonction suivant(nombre, k) qui prend en argument un nombre sous la forme d’un tableau de chiffres
en base k + 1 et qui renvoie le suivant au sens usuel de la numération en base k + 1. Par exemple : suivant([0, 9,
8], 9) doit renvoyer [0, 9, 9] et suivant([0, 9, 9], 9) doit renvoyer [1, 0, 0].

13. En utilisant la fonction précédente, écrire une fonction liste_des qui prend en argument n et k et qui renvoie un
tableau contenant tous les dés ayant n faces bornées par k.

14. Afin d’éviter des opérations inutiles, réécrire la fonction suivant(nombre, k) en une fonction de_suivant(de
, k) qui renvoie directement le dé suivant dans la liste des dés. Indiquer les changements à effectuer sur la fonction
liste_des pour utiliser cette nouvelle fonction.

Pour votre curiosité, le système de dés : [1, 3, 8], [0, 5, 7] et [2, 4, 5] est cyclique.
Aussi le système des quatres dés d’Efron [0, 0, 4, 4, 4, 4], [3, 3, 3, 3, 3, 3], [2, 2, 2, 2, 6, 6] et [1, 1, 1, 5, 5, 5] est
également cyclique.

6 Génération d’un système cyclique à p faces bornées par k


15. Ecrire un programme qui détermine, s’il en existe, un sous-système cyclique de n dés à p faces bornées par k.
Il est particulièrement conseillé d’écrire des fonctions intermédiaires pour ce programme. Majorer le plus finement
possible la complexité en fonction des paramètres.

2
Système cyclique de dés

7 Simplification et combinaison de dés


16. Ecrire une fonction qui prend en argument un dé et le simplifie si possible en renvoyant un dé ayant les mêmes
probabilités. Par exemple : [0, 0, 4, 4, 4, 4] en [0, 4, 4] ou encore [1, 1, 1, 5, 5, 5] en [1, 5]. Déterminer la complexité.

17. Ecrire une fonction qui prend en argument un dé à n1 faces et un dé à n2 faces et qui renvoie un dé à n1 + n2
faces correspondant aux faces des deux dés reçus en argument. On souhaite une complexité linéaire en n1 + n2 .

Vous aimerez peut-être aussi