2022-2023/2nd/06_Programmation/7E_simulation.ipynb
2022-11-07 17:47:17 +01:00

260 lines
7.4 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "0078371d",
"metadata": {},
"source": [
"# Simulation\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "208f5bbc",
"metadata": {},
"source": [
"## Simulation d'une marche aléatoire\n",
"\n",
"On se pose la question suivante:\n",
"\n",
" Une puce est sur une règle et fait 10 sauts de 1cm à droite ou à gauche aléatoirement. On veut savoir la chance a-t-elle de revenir à son point de départ.\n",
" \n",
"Comme nous n'avons pas de puces sous la main, nous n'avons d'autre choix que de simuler la situation avec un ordinateur."
]
},
{
"cell_type": "markdown",
"id": "6f6f1e1f",
"metadata": {},
"source": [
"### Algorithme\n",
"\n",
"Avant de se lancer dans la programmation, vous allez écrire l'algorithme pour faire cette simulation. C'est à dire la \"recette\" pour simuler les 10 sauts de la puce.\n",
"\n",
"Pour cela, mettez vous à deux. Tracez un axe gradué. Une personne simule la puce pendant que l'autre va devoir lui dire ce qu'elle doit faire. La personne qui simule doit être la plus bête possible et ne faire que ce que l'autre lui dit de faire.\n",
"\n",
"Une fois que les indications sont assez explicite, vous les écrirez avec une phrase par ligne et en utilisant les mots ou expressions suivantes\n",
"\n",
"- Affecter ... à la variable ...\n",
"- Afficher/dire\n",
"- Si ... Alors ...\n",
"- Pour ... allant de ... à ... faire ...\n",
"- Tant que ... faire ...\n",
"\n",
"Vous aurez écrit votre algorithme."
]
},
{
"cell_type": "markdown",
"id": "cdcc41de",
"metadata": {},
"source": [
"### Simulation\n",
"\n",
"A vous de traduire votre algorithme en language Python. "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "173d77ec",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "0da2a635",
"metadata": {},
"source": [
"### Droite ou gauche?\n",
"\n",
"Ici, nous allons voir comment simuler le choix de la puce d'aller à droite ou à gauche.\n",
"\n",
"En python, nous avons la fonction `random()` qui permet d'avoir un nombre aléatoire entre 0 et 1."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "27f496f9",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.2629111349482097"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from random import random\n",
"random()"
]
},
{
"cell_type": "markdown",
"id": "a59f232c",
"metadata": {},
"source": [
"On veut que la puce ait autant de chance de faire un saut à gauche qu'un saut à droite.\n",
"\n",
"1. En utilisant `random()`, écrire un programme qui affiche la direction choisi de façon aléatoire."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4bfbd25a",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "e1fba5c0",
"metadata": {},
"source": [
"2. Pour pouvoir réutiliser votre programme facilement, vous allez pouvoir le mettre dans une **fonction**. Pour cela réécrire votre programme à la place des ... dans la cellule en dessous et remplacer les `print` par `return`."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "638becc3",
"metadata": {},
"outputs": [],
"source": [
"def droite_ou_gauche():\n",
" ..."
]
},
{
"cell_type": "markdown",
"id": "3d2d67c2",
"metadata": {},
"source": [
"Vous pouvez maintenant utiliser cette fonction à n'importe quel endroit dans vos programmes."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "a570e33e",
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'droite_ou_gauche' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"Input \u001b[0;32mIn [3]\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mdroite_ou_gauche\u001b[49m()\n",
"\u001b[0;31mNameError\u001b[0m: name 'droite_ou_gauche' is not defined"
]
}
],
"source": [
"droite_ou_gauche()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "a0ebbe56",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Où pourrais-je bien aller?\n"
]
},
{
"ename": "NameError",
"evalue": "name 'droite_ou_gauche' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"Input \u001b[0;32mIn [4]\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mOù pourrais-je bien aller?\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m----> 2\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[43mdroite_ou_gauche\u001b[49m())\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mC\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mest une super idée!\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
"\u001b[0;31mNameError\u001b[0m: name 'droite_ou_gauche' is not defined"
]
}
],
"source": [
"print(\"Où pourrais-je bien aller?\")\n",
"print(droite_ou_gauche())\n",
"print(\"C'est une super idée!\")"
]
},
{
"cell_type": "markdown",
"id": "a7e6c362",
"metadata": {},
"source": [
"## Simulation de 10 000 marches aléatoires de puces\n",
"\n",
"Ici, vous allez devoir simuler 10 000 marches aléatoires vu dans la partie précédente et compter le nombre de fois que la puce termine à son point de départ.\n",
"\n",
"1. Mettre le programme qui simule la marche aléatoire dans la fonction ci-dessous à la place des ... . Vous remplacerez le `print` qui affiche où la puce termine par un `return` "
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "9992a1aa",
"metadata": {},
"outputs": [],
"source": [
"def saut_de_puce():\n",
" ..."
]
},
{
"cell_type": "markdown",
"id": "a0a40d9d",
"metadata": {},
"source": [
"2. Simuler 10 000 saut_de_puce et compter le nombre de fois que la puce revient au point de départ."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "cdfde180",
"metadata": {},
"outputs": [],
"source": []
}
],
"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.10.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}