Page 1 sur 2
Probabilités, fonction Python
Posté : sam. 8 févr. 2020 10:30
par Céline
Bonjour,
après de nombreuses heures de recherche je ne parviens pas à faire cet exercice... Il est très important que je le fasse, et j'aimerais beaucoup recevoir de l'aide :)
Voici l'exercice :
Une machine placée à l'origine sur un plan muni d'un repère orthonormé, se déplaçant à chaque seconde en simulant un entier aléatoire entre 1 et 4 de: +1 en abscisse si l'entier est 1,-1 en abscisse si l'entier est 2, +1 en ordonnée si l'entier est 3, et -1 en ordonnée si l'entier est 4.
Aussi, pour (x ; y) les coordonnées du point où se trouve la machine, son déplacement doit s'arrêter si x > 2 ou x < -2 ou y >2 ou y< -2
1/Ecrire une fonction Python "trajet ()" qui simule le trajet de cette machine (du départ à l'arrêt) et renvoyant le nombre de déplacements effectués avant l'arrêt. On stockera les abscisses et ordonnées successives où se trouve la machine dans deux listes "x" et "y" initialisées à x=[0] et y= [0] en début du programme.
2/ écrire un programme appelant 100 fois la fonction "trajet" et calculant la moyenne du nombre de déplacements réalisés sur ces 100 trajets.
En espérant une aide, même minime, de votre part :)
Re: Probabilités, fonction Python
Posté : sam. 8 févr. 2020 11:59
par SoS-Math(25)
Bonjour Céline,
Pas facile de t'aider sans savoir où tu en es dans Python. Je t'ai fait un petit exemple.
Pour l'instant, cette fonction ne fait qu'un seul déplacement (qu'il faut compléter) et ne renvoie pas le nombre de déplacement mais les nouvelles coordonnées de la machine.
Voici une façon de commencer (Tu peux modifier ce code et le tester avec le bouton play):
https://trinket.io/python3/e2009efc07
Il reste beaucoup de choses à compléter. Dis nous où tu bloques et ce qu'il te manque.
Pense à conserver ton script Python à chaque avancée sur un traitement de texte. Aussi, tu peux copier/coller ton code Python dans les messages du forum et le placer entre les balises code (voir le bouton </>). Comme ceci :
Code : Tout sélectionner
import random #On importe de quoi simuler des nombres aléatoire
def trajet():
machine_x = 0 #abscisse de la machine
machine_y = 0 #ordonnée de la machine
deplacement = random.randint(1,4) #nombre entier aléatoire entre 1 et 4
if deplacement == 1:
machine_x = machine_x + 1
if deplacement == 2:
machine_x = machine_x - 1
return (machine_x, machine_y)
Bon courage
Re: Probabilités, fonction Python
Posté : sam. 8 févr. 2020 12:45
par Céline
merci pour votre réponse! :)
mon niveau en python est assez bon, niveau 1ère je dirais car je sais à peu près comment faire cet exercice (je sais que j'aurais besoin d'utiliser "if" "else" ) mais je ne savais pas par exemple s'il fallait mettre quelque chose dans les parenthèses de "trajet ()" ou comment renvoyer le nombre de déplacements...
je vais encore chercher, merci :)
Re: Probabilités, fonction Python
Posté : sam. 8 févr. 2020 14:31
par Céline
re bonjour,
est-ce que pour afficher le nombre de déplacements je peux faire :
def nombredeplacements():
nombredeplacements == 0
if machine_x = machine_x + 1
nombredeplacements == nombredeplacements + 1
if machine_y = machine_y + 1
nombredeplacements == nombredeplacements + 1
?
Re: Probabilités, fonction Python
Posté : sam. 8 févr. 2020 14:44
par SoS-Math(25)
Pas besoin d'une autre fonction. Pour l'instant, je te conseille de compléter cette fonction pour un déplacement (4 cas).
Ensuite, il faudra une boucle while pour sortir avec des conditions
Pour initialiser nombredeplacements à 0, il faut un seul = : nombredeplacements = 0
On peut ensuite augmenter nombredeplacements de 1 après chaque tirage de nombre aléatoire
Pour les listes d'abscisses et d'ordonnées, on verra à la fin.
Code : Tout sélectionner
import random #On importe de quoi simuler des nombres aléatoire
def trajet():
machine_x = 0 #abscisse de la machine
machine_y = 0 #ordonnée de la machine
nombredeplacements = 0 #Initialisé à zéro
#Ici il va falloir une boucle while pour sortir avec des conditions
deplacement = random.randint(1,4) #nombre entier aléatoire entre 1 et 4
nombredeplacements = nombredeplacements + 1 #Ici on va augmenter le ce nombre
if deplacement == 1:
machine_x = machine_x + 1
if deplacement == 2:
machine_x = machine_x - 1
#Fin de la boucle while
return (machine_x, machine_y)#A la fin, il faudra renvoyer nombredeplacements à la place des coordonnées
Bon courage
Re: Probabilités, fonction Python
Posté : sam. 8 févr. 2020 16:34
par Céline
SoS-Math(25) a écrit : ↑sam. 8 févr. 2020 14:44
Pour l'instant, je te conseille de compléter cette fonction pour un déplacement (4 cas).
def trajet():
machine_x = 0
machine_y = 0
nombredeplacements = 0
deplacement = random.randint(1,4)
if deplacement == 1:
machine_x = machine_x + 1
if deplacement == 2:
machine_x = machine_x - 1
if deplacement == 3:
machine_y = machine_y + 1
if deplacement == 4:
machine_y = machine_y - 1
if machine_x < 2:
nombredeplacements = nombredeplacements + 1
if machine_x > -2:
nombredeplacements = nombredeplacements + 1
if machine_y < 2:
nombredeplacements = nombredeplacements + 1
if machine_y > -2:
nombredeplacements = nombredeplacements + 1
return (nombredeplacements)
je ne sais pas où utiliser "while", j'ai l'impression que ce que j'ai fait ci-dessus n'est pas correct, qu'en pensez-vous ? :/
Re: Probabilités, fonction Python
Posté : sam. 8 févr. 2020 19:22
par Céline
je ne comprends pas car il y a 3h j'ai envoyé un message mais il n'apparaît pas.. j'avais écrit :
def trajet():
machine_x = 0
machine_y = 0
nombredeplacements = 0
deplacement = random.randint(1,4)
if deplacement == 1:
machine_x = machine_x + 1
if deplacement == 2:
machine_x = machine_x - 1
if deplacement == 3:
machine_y = machine_y + 1
if deplacement == 4:
machine_y = machine_y - 1
if machine_x < 2:
nombredeplacements = nombredeplacements + 1
if machine_x > -2:
nombredeplacements = nombredeplacements + 1
if machine_y < 2:
nombredeplacements = nombredeplacements + 1
if machine_y > -2:
nombredeplacements = nombredeplacements + 1
return (nombredeplacements)
est-ce qu'à votre avis c'est correct ?
Re: Probabilités, fonction Python
Posté : sam. 8 févr. 2020 20:52
par SoS-Math(25)
Bonsoir Céline,
Il faut qu'un modérateur voit et valide ton message pour qu'il apparaisse.
Pour le nombre de déplacement, il vaut attendre de créer complétement la boucle.
Je t'aide un peu. Tu en es là :
Code : Tout sélectionner
import random
def trajet():
machine_x = 0
machine_y = 0
deplacement = random.randint(1,4)
if deplacement == 1:
machine_x = machine_x + 1
if deplacement == 2:
machine_x = machine_x - 1
if deplacement == 3:
machine_y = machine_y + 1
if deplacement == 4:
machine_y = machine_y - 1
return (machine_x, machine_y)
Je te propose une boucle while dont les conditions sont à compléter. "while" peut se traduire par "tant que". Il te reste deux conditions à ajouter sur cette ligne. Bon courage
Code : Tout sélectionner
import random
def trajet():
machine_x = 0
machine_y = 0
nombredeplacements = 0
while machine_x < 2 and machine_x > -2:
deplacement = random.randint(1,4)
if deplacement == 1:
machine_x = machine_x + 1
if deplacement == 2:
machine_x = machine_x - 1
if deplacement == 3:
machine_y = machine_y + 1
if deplacement == 4:
machine_y = machine_y - 1
return (machine_x, machine_y)
Re: Probabilités, fonction Python
Posté : dim. 9 févr. 2020 12:25
par Céline
Bonjour, merci pour votre aide, j'ai complété les conditions restantes :
je vais essayer de continuer, le temps que ma réponse soit postée :)
Code : Tout sélectionner
import random
def trajet():
machine_x = 0
machine_y = 0
nombredeplacements = 0
while machine_x < 2 and machine_x > -2 and machine_y < 2 and > -2 :
deplacement = random.randint(1,4)
if deplacement == 1:
machine_x = machine_x + 1
if deplacement == 2:
machine_x = machine_x - 1
if deplacement == 3:
machine_y = machine_y + 1
if deplacement == 4:
machine_y = machine_y - 1
return (machine_x, machine_y)
Re: Probabilités, fonction Python
Posté : dim. 9 févr. 2020 12:38
par Céline
Tout compte fait je ne sais pas comment continuer
Re: Probabilités, fonction Python
Posté : dim. 9 févr. 2020 14:01
par sos-math(21)
Bonjour,
pour ta condition d'arrêt, il y aura un message d'erreur avec
De plus, il faut des inégalités larges car cela s'arrête dès que \(x>2\) ou \(x<-2\)...
tu peux grouper tes tests en mettant -2<=machine_x<=2 and -2<=machine_y<=2.
Ensuite, la fonction trajet doit renvoyer un nombre de déplacements, donc tu crées un compteur nombredeplacements initialisé à 0 et qui augmente de 1 à chaque tour de boucle :
Cela pourrait donc donner :
Code : Tout sélectionner
import random
def trajet():
machine_x = 0
machine_y = 0
nombredeplacements = 0
while -2<=machine_x<=2 and -2<=machine_y<=2 :
deplacement = random.randint(1,4)
if deplacement == 1:
machine_x = machine_x + 1
if deplacement == 2:
machine_x = machine_x - 1
if deplacement == 3:
machine_y = machine_y + 1
if deplacement == 4:
machine_y = machine_y - 1
nombredeplacements = nombredeplacements + 1
return nombredeplacements
Bonne continuation
Re: Probabilités, fonction Python
Posté : lun. 10 févr. 2020 18:58
par Céline
bonjour,
j'ai testé le programme hier plusieurs fois cependant il n'affiche rien ... j'ai essayé de le modifier un peu mais sans succès ...
merci pour vos réponses,
Céline
Re: Probabilités, fonction Python
Posté : lun. 10 févr. 2020 20:48
par sos-math(21)
Bonjour,
le code que je t'ai envoyé (et celui de sos-math(25) aussi d'ailleurs) correspond à une fonction Python : c'est un ensemble d'instructions "emballées" dans un "bloc" donc elle ne produit rien si on ne la sollicite pas !
Il faut donc faire
un appel de la fonction, soit en tapant trajet() dans la console, soit en demandant un affichage print(trajet()) dans le script :
https://repl.it/repls/ConstantWorriedResearch
Bonne continuation
Re: Probabilités, fonction Python
Posté : mar. 11 févr. 2020 17:37
par Céline
bonsoir,
d'accord merci beaucoup, je vais continuer ...
Re: Probabilités, fonction Python
Posté : mar. 11 févr. 2020 22:23
par sos-math(21)
Bonjour,
tu peux désormais écrire une fonction moyenne qui prend en paramètre un nombre n et qui renvoie la moyenne du nombre de déplacements pour n trajets. Cela peut se construire ainsi :
tu crées une variable somme qui va accumuler successivement le nombre de déplacement pour chaque trajet ; somme est initialisée à 0
Tu crées une variable trajet_courant qui va recueillir le nombre de déplacements du trajet : trajet_courant est initialisé à 0.
tu crées une boucle for qui va tourner n fois (for i in range(n)) :
tu simules un trajet et tu récupères son nombre de déplacement en affectant à trajet_courant la valeur trajet()
tu ajoutes cette valeur à la somme
enfin, à l'issue de la boucle, tu renvoies la variable somme/n pour faire une moyenne.
Des appels successifs de moyenne(100) renvoient des valeurs autour de 10 (entre 8 et 12, mais souvent aux alentours de 10).
Bonne continuation