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

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

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