Feat: Simulation et espérance en programmant du python
This commit is contained in:
parent
69cf363e67
commit
b2a1f38107
647
TST/03_Variables_aleatoires/3E_esperance_simulation.ipynb
Normal file
647
TST/03_Variables_aleatoires/3E_esperance_simulation.ipynb
Normal file
@ -0,0 +1,647 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "0Ntb8bau4V18"
|
||||
},
|
||||
"source": [
|
||||
"# Python, Variable aléatoire et espérance\n",
|
||||
"\n",
|
||||
"---\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "FeZvKplb4lIR"
|
||||
},
|
||||
"source": [
|
||||
"## Rappel\n",
|
||||
"\n",
|
||||
"Dans les encadrés, il y a du code écrit dans le language Python. Pour faire **exécuter** le code, il vous faudra cliquer dessus puis appuyer sur `shift+entrer` de votre clavier. Le résultat du programme s'affichera alors en dessous.\n",
|
||||
"\n",
|
||||
"Nous allons travailler avec de l'aléatoire. N'hésitez pas à exécuter plusieurs fois les programmes, le résultat pourra changer."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "cDLuRPVr4zbC"
|
||||
},
|
||||
"source": [
|
||||
"## Génération de valeur aléatoire et affectation\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "RtzRRqrD7hJp"
|
||||
},
|
||||
"source": [
|
||||
"\n",
|
||||
"Nous allons commencer par importer un module *random* qui nous permet d'utiliser des fonctions Python mathématiques avancées. \n",
|
||||
"Pour importer des fonctions d'un module, on exécute en début de code **from** *nom_module* **import** *nom_fonction*. Si on veut importer toutes les fonctions du module, on peut aussi taper **from** *nom_module* **import** *\n",
|
||||
"\n",
|
||||
"* Exécuter ce code avant toute chose\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "kjj9QOtu7YoX"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from random import randint, random"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "oEmS3wQV6NK0"
|
||||
},
|
||||
"source": [
|
||||
"\n",
|
||||
"\n",
|
||||
"* Exécuter *une dizaine de fois* le code Python ci-dessous. Que fait-il ?\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 35
|
||||
},
|
||||
"id": "x04O92QV5ZpE",
|
||||
"outputId": "838eae03-9af7-49ec-f4c6-7b3ff42dec4f"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"print(randint(1,10))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "gbSoIN9U9-yK"
|
||||
},
|
||||
"source": [
|
||||
"* Exécuter *une dizaine de fois* le code Python ci-dessous. Que fait-il ?\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 35
|
||||
},
|
||||
"id": "VHTA9az19_9d",
|
||||
"outputId": "1483d01e-d3fa-455d-d4e4-4cf062e7a199"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"n=randint(100,200)\n",
|
||||
"print(n)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"- Écrire une programme qui génère un nombre aléatoire entre 10 et 20."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"- Écrire un programme qui simule un lancer d'un dé à 6 faces."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "9qw8LHnS9nHJ"
|
||||
},
|
||||
"source": [
|
||||
"\n",
|
||||
"\n",
|
||||
"* Exécuter *une dizaine de fois* le code Python ci-dessous. Que fait-il ?\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 35
|
||||
},
|
||||
"id": "Yn1RF8u_7dAC",
|
||||
"outputId": "e5ba805d-f0a2-4d49-bfcc-69ffba0be20f"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"r=random()\n",
|
||||
"print(r)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"- Écrire un résumé pour expliquer le fonctionnement de `random` et de `randint`"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"- Dans l'encadré ci-dessous, écrire un code Python suivant les instructions suivantes :\n",
|
||||
" - simuler deux lancers de dés successifs\n",
|
||||
" - afficher la somme des deux dés"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "YM1Vk5vU_GWr"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"- Exécuter votre programme plusieurs fois. Est-ce qu'il y a des nombres qui apparaissent plus souvent?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "E0BUoBlr_2FK"
|
||||
},
|
||||
"source": [
|
||||
"## Tests avec Python\n",
|
||||
"Python peut nous permettre de tester si une variable est égale à une valeur grace à des outils de comparaison\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"* Exécuter le code Python ci-dessous. Que fait-il ? Que veut dire `True` et `False`?\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 52
|
||||
},
|
||||
"id": "F3p3_tcIAQVX",
|
||||
"outputId": "a9e8f5ff-2c9c-4860-971d-0cd5ac71fb3e"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"a=3\n",
|
||||
"print(a==3)\n",
|
||||
"print(a==2)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "f8TvF4aSBTpk"
|
||||
},
|
||||
"source": [
|
||||
"\n",
|
||||
"* Exécuter le code Python ci-dessous. Que fait-il ?\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "JyqK6_EbAehv"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"print(a>1)\n",
|
||||
"print(a<0)\n",
|
||||
"print(a>=2)\n",
|
||||
"print(a<=3)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"- Écrire un programme dans lequel vous donner une valeur à une variable puis vous faites les tests pour déterminer si cette variable est strictement plus petite que 10, égale à 10 et plus grande que 20"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"- Écrire un résumé sur la comparaison des nombres en Python."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "hbRVNyogApbV"
|
||||
},
|
||||
"source": [
|
||||
"\n",
|
||||
"\n",
|
||||
"- Dans l'encadré ci-dessous, écrire un code Python suivant les instructions suivantes :\n",
|
||||
" - simuler un lancer d'un dé classique à 6 faces\n",
|
||||
" - tester si le nombre obtenu est égal à 6\n",
|
||||
" - afficher la réponse renvoyée par le test\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "Y2XAs0LMAxk_"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "x9dbzY4dBYhD"
|
||||
},
|
||||
"source": [
|
||||
"## Instructions conditionnelles\n",
|
||||
"En Python, suite à un test, on peut vouloir exécuter des instructions différentes en fonction du résultat du test.\n",
|
||||
"\n",
|
||||
"- Exécuter le code Python ci-dessous. Expliquer ce qu'il fait."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 52
|
||||
},
|
||||
"id": "lugFwQgIGTmF",
|
||||
"outputId": "e6774df5-bdc9-4e21-fc6f-cb994eae1b06"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"a=randint(1,3)\n",
|
||||
"print(a)\n",
|
||||
"if a>2:\n",
|
||||
" print('a est plus grand que 2')\n",
|
||||
"else :\n",
|
||||
" print('a est plus petit ou égal à 2')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"- Écrire un programme qui génère un nombre entre 10 et 20. Si ce nombre est plus grand que 18, on affiche \"gagné\", sinon \"perdu\"."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"- Proposer une programme qui utilise une condition."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "6oOgqarGHkXj"
|
||||
},
|
||||
"source": [
|
||||
"\n",
|
||||
"\n",
|
||||
"- Dans l'encadré ci-dessous, écrire un code Python simulant un jeu de dés : \n",
|
||||
" - lancer deux dés consécutifs et stocker la somme des deux dés dans une variable `somme`\n",
|
||||
" - créer une variable `gain` qui vaut 0 au début du *programme*\n",
|
||||
" - tester la valeur de votre somme : si elle vaut au moins 10, vous gagner 10 points ; sinon, vous perdez 1 point\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "kmTqw8vpIXqj"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "0LjWEU-VIY72"
|
||||
},
|
||||
"source": [
|
||||
"- Question mathématiques : dans l'expérience aléatoire décrite ci-dessous, le gain représente une variable aléatoire. Quelle est la loi de probabilité associée à cette variable aléatoire ? Et quelle est son espérance ?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "XKYOOvQ_LuNo"
|
||||
},
|
||||
"source": [
|
||||
"## Réponse au hasard à un QCM\n",
|
||||
"\n",
|
||||
"Reprenons les exemples de l'activité \"Réponse au hasard à un QCM\".\n",
|
||||
"\n",
|
||||
"### Faut-il répondre?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Nous allons commencer à travailler sur la questions 1 du QCM.\n",
|
||||
"\n",
|
||||
"- Remplacer les `#` du programme ci-dessous avec les valeurs de la question 1.\n",
|
||||
"- Exécuter le code ci-dessous. Que fait-il ?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 52
|
||||
},
|
||||
"id": "C1W-OfrDMJ4p",
|
||||
"outputId": "622afcf1-7527-4647-d76e-8d2dc8381ef3"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"gain_reponse_juste = #\n",
|
||||
"proba_reponse_juste = #\n",
|
||||
"gain_reponse_fausse= #\n",
|
||||
"proba_reponse_fausse= #\n",
|
||||
"\n",
|
||||
"esperance = gain_reponse_juste*proba_reponse_juste+gain_reponse_fausse*proba_reponse_fausse\n",
|
||||
"print(esperance)\n",
|
||||
"\n",
|
||||
"if esperance >= 0:\n",
|
||||
" print('Je peux répondre au hasard')\n",
|
||||
"else:\n",
|
||||
" print('Je ne réponds pas au hasard!')\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "tF_epYFAM-Og"
|
||||
},
|
||||
"source": [
|
||||
"- Dans les encadrés ci-dessous, écrire un code Python reprenant les données des questions 3 et 5 et permettant de décider si vous tentez de répondre à la question ou si vous décidez de ne pas répondre à la question du QCM\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "iSpNLoi_NUI_"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "3-23FvMfNTPO"
|
||||
},
|
||||
"source": [
|
||||
"### Simulation\n",
|
||||
"\n",
|
||||
"On va maintenant simuler ce QCM pour évaluer votre note finale.\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"* Exécuter le code suivant qui détermine à quel rang se situent les réponses justes (inutile d'essayer de le comprendre).\n",
|
||||
"\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "Pm9Tpnf8Ngc5"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"reponse_juste_question1 = randint(1,4)\n",
|
||||
"reponse_juste_question2 = randint(1,5)\n",
|
||||
"reponse_juste_question3 = randint(1,4)\n",
|
||||
"reponse_juste_question4 = randint(1,5)\n",
|
||||
"reponse_juste_question5 = randint(1,4)\n",
|
||||
"reponse_juste1_question6 = randint(1,6)\n",
|
||||
"reponse_juste2_question6 = randint(1,6)\n",
|
||||
"while (reponse_juste2_question6==reponse_juste1_question6):\n",
|
||||
" reponse_juste2_question6=randint(1,6)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "fsnBjCHfOh8m"
|
||||
},
|
||||
"source": [
|
||||
"* Compléter le code suivant avec votre réponse à la question 1 puis exécuter-le. Que fait-il ?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 35
|
||||
},
|
||||
"id": "tEpndajfOmn8",
|
||||
"outputId": "9071c0b7-4655-4d83-83b3-3ff6ab4f8789"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"ma_reponse_question1= #ajouter le numéro de votre réponse ici\n",
|
||||
"gain=0\n",
|
||||
"if ma_reponse_question1==reponse_juste_question1:\n",
|
||||
" gain=gain+2\n",
|
||||
"else:\n",
|
||||
" gain=gain+0\n",
|
||||
"print(gain)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "rsNoQIKWP0mO"
|
||||
},
|
||||
"source": [
|
||||
"- Dans l'encadré ci-dessous, reprendre le code Python ci-dessus pour simuler chacune de vos réponses aux 5 questions du QCM et calculer votre note finale. BONUS : ajouter la 6e question également.\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "F1jCOfLPQLEl"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "LWW0V4o7QM_u"
|
||||
},
|
||||
"source": [
|
||||
"\n",
|
||||
"\n",
|
||||
"---\n",
|
||||
"\n",
|
||||
"Nous allons à présent simuler une répétition de la réponse au hasard à la première question du QCM. Nous allons commencer par répéter 3 fois l'expérience.\n",
|
||||
"- Exécuter ce code *une dizaine de fois*. Quel résultat obtenez-vous ? Expliquer ligne à ligne ce que fait ce code."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 52
|
||||
},
|
||||
"id": "oHFkI8mfY1tk",
|
||||
"outputId": "9987aca1-2f78-4e0f-fdd3-7650ad8becc6",
|
||||
"scrolled": true
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"print(esperance_question1)\n",
|
||||
"\n",
|
||||
"gain=0\n",
|
||||
"\n",
|
||||
"for i in range(3):\n",
|
||||
" ma_reponse_question1=randint(1,4)\n",
|
||||
" if ma_reponse_question1==reponse_juste_question1:\n",
|
||||
" gain=gain+2\n",
|
||||
" else:\n",
|
||||
" gain=gain+0\n",
|
||||
"gain_moyen=gain/3\n",
|
||||
"print(gain_moyen)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "e3WdV6NggmTZ"
|
||||
},
|
||||
"source": [
|
||||
"Modifier le code ci-dessous pour répéter 10 fois, 100 fois, 1000 fois l'expérience. Pour chaque valeur, exécuter le code *plusieurs fois* et noter le résultat obtenu à chaque fois. Que constatez-vous ? "
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"name": "Python_VariableAleatoire&Esperance.ipynb",
|
||||
"provenance": []
|
||||
},
|
||||
"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.8.5"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 1
|
||||
}
|
Loading…
Reference in New Issue
Block a user