You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

288 lines
9.8 KiB

{
"cells": [
{
"cell_type": "markdown",
"id": "a35eeb9f-df70-4ab1-a243-2d2025888eb0",
"metadata": {},
"source": [
"# Exercice 1\n",
"1) Combien y a t'il de dominos dans un jeu classique ? \n",
"Un jeu de dominos classique est composé de 28 pièces dont chaque moitié comporte un certain nombre de petits points allant de 0 à 6, sans doublons, ce qui donne 7 * 4 = 28 pièces.\n",
"\n",
"2) Pourquoi est-il possible que le jeu s'arrête sans avoir posé tous les dominos ? \n",
"Il est possible que le jeu s'arrete avant d'avoir posé tout les dominos car chaque moitié comporte un certain nombre de petits points allant de 0 à 6. Si les combinaisons de dominos disponibles dans la pioche ne sont pas compatibles avec les extrémités de la chaîne déjà construite, le jeu peut se terminer sans avoir posé tous les dominos. Cela dépend de la chance et de l'ordre dans lequel les dominos sont tirés.\n",
"\n",
"3) Pourquoi X et Y sont des variables aléatoires ? \n",
"X et Y sont des variables aléatoires car leur valeur dépend du hasard et des choix effectués tout au long du jeu. La variable aléatoire X représente le nombre de dominos posés dans la chaîne, et elle dépend du nombre de dominos tirés et de la possibilité de les placer à chaque étape. De même, la variable aléatoire Y représente le nombre de points restants dans la pioche, ce qui dépend également de la manière dont les dominos sont tirés et placés. En raison de la nature aléatoire du jeu, X et Y prennent des valeurs différentes à chaque partie, d'où leur caractère aléatoire. Pour comprendre leur comportement, il est nécessaire d'étudier leur distribution de probabilité."
]
},
{
"cell_type": "markdown",
"id": "2f8b9e53-7277-4663-ad35-0db9e824d45f",
"metadata": {},
"source": [
"- Quelle structure de données pour représenter la pioche de dominos restants ?\n",
" - La structure nécéssaire est une file car on insere en queue mais on supprime en tete\n",
"- Quelle structure de données pour représenter la chaîne de dominos déjà construite? (Sachant qu'il suffit de considérer l'information pertinente pour le déroulement du jeu.)\n",
" - Une liste car c'est une fassons simple de stocker les dominos mis en place sur le tapis\n",
"- Comment savoir si le jeu est \u001c",
"fini ?\n",
" - si on ne peut plus inserer en tete ou en queue les dominos de la pioche.\n",
"- Est-il éventuellement utile d'écrire certaines sous-fonctions, afin de clarifier le code ? \n",
"Ca peut être plus simple à comprendre le code, notamment pour le comptage de Y."
]
},
{
"cell_type": "markdown",
"id": "060f3b6e-ed57-4ecc-9338-f2491f54bd74",
"metadata": {},
"source": [
"exemple de file en python :"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "bee8d798-d9bb-464c-9b66-329678fa2fda",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n",
"[2, 3]\n"
]
}
],
"source": [
"queue = [] # la file est vide\n",
"\n",
"queue.append(1) # la file contient [1]\n",
"queue.append(2) # la file contient [1, 2]\n",
"queue.append(3) # la file contient [1, 2, 3]\n",
"\n",
"result = queue.pop(0) # la file contient [2, 3]\n",
"\n",
"print(result)\n",
"print(queue)"
]
},
{
"cell_type": "markdown",
"id": "5fabca55-4ebf-4499-b652-86844be439e5",
"metadata": {},
"source": [
"**Initialisation et affichage de la pioche**"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "fe55883a-6887-43dd-9498-5333a51799e2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 1]\n",
"[1, 2]\n",
"[1, 3]\n",
"[1, 4]\n",
"[1, 5]\n",
"[1, 6]\n",
"[2, 2]\n",
"[2, 3]\n",
"[2, 4]\n",
"[2, 5]\n",
"[2, 6]\n",
"[3, 3]\n",
"[3, 4]\n",
"[3, 5]\n",
"[3, 6]\n",
"[4, 4]\n",
"[4, 5]\n",
"[4, 6]\n",
"[5, 5]\n",
"[5, 6]\n",
"[6, 6]\n"
]
}
],
"source": [
"import random\n",
"\n",
"# initialisation de la pioche contenant 28 pièces\n",
"pioche = [[i, j] for i in range(1,7) for j in range(i, 7)]\n",
"\n",
"# Exemple d'utilisation : affichez la file de dominos\n",
"for domino in pioche:\n",
" print(domino)"
]
},
{
"cell_type": "code",
"execution_count": 67,
"id": "09689b16-24dc-4025-bad9-90d0fe385b6b",
"metadata": {},
"outputs": [],
"source": [
"def comptePoints(P):\n",
" # Initialise un compteur pour les points\n",
" nb = 0\n",
" \n",
" # Parcours tous les dominos de la liste\n",
" for domino in P:\n",
" # Ajoute les points des deux moitiés du domino\n",
" nb += sum(domino)\n",
" \n",
" return nb"
]
},
{
"cell_type": "code",
"execution_count": 433,
"id": "f62cffa4-8e44-4b62-a49a-c3b4c9c50964",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"X = 20, Y = 10\n"
]
}
],
"source": [
"# Fonction pour simuler une partie du jeu de dominos\n",
"def une_chaine_domino():\n",
" # Liste représentant les dominos sur le jeu\n",
" tapis = []\n",
"\n",
" #initialisation d'une variable pour compter le nombre de pioche dans la pioche\n",
" cpt = 0\n",
" \n",
" # Liste représentant la pioche de dominos restants\n",
" pioche = [(i, j) for i in range(1, 7) for j in range(i, 7)]\n",
"\n",
" # Tant que la pioche n'est pas vide et qu'on peut poser des dominos\n",
" while pioche:\n",
" domino = random.choice(pioche) # Tirer un domino au hasard\n",
" pioche.remove(domino) # Retirer le domino de la pioche\n",
"\n",
" if not tapis: # Si c'est le premier domino, ajoutez-le directement\n",
" tapis.append(domino)\n",
" else:\n",
" # Vérifiez si le domino peut être placé à l'une des extrémités de la chaîne\n",
" if domino[0] == tapis[0][0] or domino[1] == tapis[0][0]:\n",
" tapis.insert(0, domino) # Placez-le au début de la chaîne\n",
" cpt = 0;\n",
" elif domino[0] == tapis[0][1] or domino[1] == tapis[0][1]: # On regarde le second argument du premier couple du tapis\n",
" tapis.append(domino) # Placez-le à la fin de la chaîne\n",
" cpt = 0;\n",
" else:\n",
" pioche.append(domino)\n",
" cpt = cpt + 1;\n",
" if(cpt > len(pioche)):\n",
" break # Si après un tour entier de la pioche est éfféctué sans pour voir placer un domino\n",
"\n",
" # Valeur de X : nombre de dominos posés dans la chaîne\n",
" X = len(tapis)\n",
"\n",
" # Valeur de Y : nombre de points restants dans la pioche\n",
" Y = comptePoints(pioche)\n",
"\n",
" return X, Y\n",
"\n",
"# Utilisation de la fonction\n",
"X, Y = une_chaine_domino()\n",
"print(f\"X = {X}, Y = {Y}\")"
]
},
{
"cell_type": "markdown",
"id": "0e26c4cc-b76f-40b6-9146-ee2ffb396909",
"metadata": {},
"source": [
"# Exercice 3 (Analyse probabiliste). \n",
"Simulez un grand nombre de réalisations du jeu (au moins 10000). \n",
"Puis, à l'aide des méthodes déjà vues en cours et en TP :"
]
},
{
"cell_type": "code",
"execution_count": 442,
"id": "c86fee95-c245-407b-b93b-4c53661b08a2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Moyenne de X : 14.8719\n",
"Moyenne de Y : 48.1079\n"
]
}
],
"source": [
"# Nombre de réalisations du jeu\n",
"nombre_de_realisations = 10000\n",
"\n",
"# Liste pour stocker les résultats des n réalisations\n",
"resultats = []\n",
"\n",
"# Simulez le jeu un grand nombre de fois et stockez les résultats\n",
"for _ in range(nombre_de_realisations):\n",
" X, Y = une_chaine_domino()\n",
" resultats.append((X, Y))\n",
"\n",
"# Vous pouvez maintenant analyser les résultats pour obtenir des statistiques\n",
"# Par exemple, vous pouvez calculer la moyenne et l'écart-type pour X et Y.\n",
"moyenne_X = sum(X for X, Y in resultats) / nombre_de_realisations\n",
"moyenne_Y = sum(Y for X, Y in resultats) / nombre_de_realisations\n",
"\n",
"# Affichez les résultats statistiques\n",
"print(f\"Moyenne de X : {moyenne_X}\")\n",
"print(f\"Moyenne de Y : {moyenne_Y}\")"
]
},
{
"cell_type": "markdown",
"id": "111760f4-ecc7-4a97-84bc-de48314e0eb0",
"metadata": {},
"source": [
"1. Estimer et représenter la loi de probabilité de la variable X.\n",
"2. Calculer et tracer la fonction de répartition de X.\n",
"3. Estimer l'espérance de X.\n",
"4. Estimer la variance de X.\n",
"5. Mêmes questions pour la variable Y .\n",
"6. Estimer la probabilité de succès au jeu, c'est-à-dire, la probabilité de parvenir à placer tous\n",
"les dominos dans la chaine.\n",
"7. Estimer le nombre médian de points restants dans la pioche."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.5"
}
},
"nbformat": 4,
"nbformat_minor": 5
}