Probabilités, fonction Python

Retrouver tous les sujets résolus.
Céline

Probabilités, fonction Python

Message par Céline » sam. 8 févr. 2020 10:30

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 :)
SoS-Math(25)
Messages : 1859
Enregistré le : mer. 2 nov. 2011 09:39

Re: Probabilités, fonction Python

Message par SoS-Math(25) » sam. 8 févr. 2020 11:59

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
Céline

Re: Probabilités, fonction Python

Message par Céline » sam. 8 févr. 2020 12:45

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 :)
Céline

Re: Probabilités, fonction Python

Message par Céline » sam. 8 févr. 2020 14:31

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

?
SoS-Math(25)
Messages : 1859
Enregistré le : mer. 2 nov. 2011 09:39

Re: Probabilités, fonction Python

Message par SoS-Math(25) » sam. 8 févr. 2020 14:44

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
Céline

Re: Probabilités, fonction Python

Message par Céline » sam. 8 févr. 2020 16:34

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 ? :/
Céline

Re: Probabilités, fonction Python

Message par Céline » sam. 8 févr. 2020 19:22

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 ?
SoS-Math(25)
Messages : 1859
Enregistré le : mer. 2 nov. 2011 09:39

Re: Probabilités, fonction Python

Message par SoS-Math(25) » sam. 8 févr. 2020 20:52

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)
Céline

Re: Probabilités, fonction Python

Message par Céline » dim. 9 févr. 2020 12:25

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)
Céline

Re: Probabilités, fonction Python

Message par Céline » dim. 9 févr. 2020 12:38

Tout compte fait je ne sais pas comment continuer
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Probabilités, fonction Python

Message par sos-math(21) » dim. 9 févr. 2020 14:01

Bonjour,
pour ta condition d'arrêt, il y aura un message d'erreur avec

Code : Tout sélectionner

and > -2 :
        
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
Céline

Re: Probabilités, fonction Python

Message par Céline » lun. 10 févr. 2020 18:58

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
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Probabilités, fonction Python

Message par sos-math(21) » lun. 10 févr. 2020 20:48

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
Céline

Re: Probabilités, fonction Python

Message par Céline » mar. 11 févr. 2020 17:37

bonsoir,
d'accord merci beaucoup, je vais continuer ...
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Probabilités, fonction Python

Message par sos-math(21) » mar. 11 févr. 2020 22:23

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
Répondre