{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Échauffements\n",
    "\n",
    "- [ ] Copier-coller blocspar blocs le programme suivant en corrigeant les éventuelles erreurs (il y en a au moins une par bloc)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "\"Je veux calculer le périmètre et l'aire de cercles\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import math\n",
    "print(\"Pour cela j'ai besoin de Pi\")\n",
    "pi = 3.14\n",
    "print(\"Je sais que pi vaut pi\")\n",
    "print(\"Mais Python connait une valeur approchée plus précise de pi, elle vaut\", math.pi)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Je veux calculer le périmètre d'un cercle\")\n",
    "rayon = 3\n",
    "print(\"Quand le rayon vaut\", rayon, \"le périmètre vaut\", 2*math.pi*5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"On peut en faire une fonction\")\n",
    "def perimetre(rayon)\n",
    "return 4*math.pi*rayon\n",
    "print(\"Le périmètre d'un cercle de rayon 2 est \", perimetre(2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- [ ] Ecrire une fonction qui calcule l'aire d'un cercle à partir de son rayon.\n",
    "- [ ] Copier-coller, tester ce bloc puis expliquer avec # ce qu'il fait."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "rayon = 10\n",
    "print(\"J'ai un cercle de rayon\", rayon)\n",
    "if rayon < 50:\n",
    "    print(\"C'est un petit cercle.\")\n",
    "else:\n",
    "    print(\"C'est un grand cercle!\")\n",
    "print(\"Son périmètre vaut\", perimetre(rayon))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Simulation de phénomènes aléatoires\n",
    "\n",
    "D'après wikipedia\n",
    "\n",
    "    La simulation est un outil utilisé par le chercheur, l'ingénieur, le militaire, etc. pour étudier les résultats d'une action sur un élément sans réaliser l'expérience sur l'élément réel.\n",
    "\n",
    "    Lorsque l'outil de simulation utilise un ordinateur on parle de simulation numérique.\n",
    "    \n",
    "La simulation sert à produire des **données** à partir d'un modèle, d'une expérience. Ces données servent ensuite à valider le modèle ou à analyser l'expérience.\n",
    "\n",
    "Dans ce TP, vous allez modéliser puis simuler des expériences aléatoires. Il vous faudra d'abord choisir les bons outils pour reproduire informatiquement l'expérience puis la faire jouer par l'ordinateur de nombreuses fois."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Les fonctions random\n",
    "\n",
    "Par défaut, Python ne sait pas faire d'aléatoire. Il faut donc importer quelques fonctions depuis `random` (aléatoire en anglais)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from random import random, randint, uniform, choice"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Exécutez plusieurs fois les commandes pour vous convaincre qu'elles ne donnent pas toujours le même résultat.\n",
    "\n",
    "- `random()`: donne un nombre aléatoire entre 0 et 1."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "random()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- `randint(a, b)`: donne un entier aléatoire entre a et b."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "randint(4, 10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- `uniform(a, b)`: donne un nombre aléatoire entre a et b."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "uniform(4, 10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- `choice(liste)`: choisit aléatoirement un élément de la liste."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Pour définir une liste, on utilise des crochets []\n",
    "matieres = [\"math\", \"français\", \"Histoire\"]\n",
    "# Choisir au hasard un élément parmi cette liste\n",
    "choice(matieres)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "Pour chaque problème qui suit, avant de vous lancer dans sa résolution, réfléchissez à la réponse que vous donneriez intuitivement.\n",
    "\n",
    "---"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Jeux de dés\n",
    "\n",
    "On veut jouer à un jeu de hasard, le but est d'avoir le plus haut score. Pour cela nous pouvons choisir l'une des trois situations suivantes:\n",
    "\n",
    "- Situation 1: On lance deux dés à douze faces numérotées de 1 à 12 et on ajoute les scores.\n",
    "- Situation 2: On lance quatre dés à 6 faces numérotées de 1 à 6 et on ajoute des scores.\n",
    "\n",
    "On supposera que tous les dés sont équilibrés.\n",
    "\n",
    "**On souhaite savoir quelle est la situation la plus avantageuse.**\n",
    "\n",
    "Pour répondre à cette question, on propose les étapes suivantes.\n",
    "\n",
    "1. Simuler la situation 2. Y a-t-il des nombres qui semblent revenir plus souvent que les autres?\n",
    "2. Simuler la situation 3. Même question.\n",
    "3. Simuler les 2 situations en même temps. Quelle est celle qui semble la plus avantageuse?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Dés de Efrons\n",
    "\n",
    "On dispose de 3 dés à 6 faces équilibrés avec les nombres suivants sur leurs faces.\n",
    "\n",
    "- A : 1, 6, 11, 12, 13, 14\n",
    "- B : 2, 3, 4, 15, 16, 17\n",
    "- C : 5, 7, 8, 9, 10, 18\n",
    "\n",
    "**On souhaite savoir si un dé est plus avantageux que les autres.**\n",
    "\n",
    "Proposition d'étapes pour répondre à cette question\n",
    "\n",
    "1. Simuler le lancer de ces 3 dés.\n",
    "2. Simuler en même temps les dés A et B. Lequel semble donner le meilleur score?\n",
    "3. Faire la même chose avec les dés A et C puis avec les dés B et C.\n",
    "4. Y a-t-il un dé plus fort que les autres?\n",
    "5. Simuler le lancer des 3 dés en même temps lequel semble le plus fort?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Les dés des Dudu\n",
    "\n",
    "Dans [le problème des dés des Dudu](https://mathix.org/video/problemes_ouverts/PB_DUDU/PBDUDU7-d%C3%A9.mp4), les deux frères ont chacun deux dés différents:\n",
    "\n",
    "- Le frère 1: a un dé qui va de 0 à 9 et un dé de 1 à 8.\n",
    "- Le frère 2: a un dé de 1 à 12 et un dé classique 1 à 6.\n",
    "\n",
    "**On veut savoir qui sera le premier à faire 17 en ajoutant le résultat de ses 2 dés.**\n",
    "\n",
    "À vous de simuler cette situation pour répondre à la question."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "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.7.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
