Probabilités, fonction Python

Répondre


Aide syntaxe LaTeX
Les BBCodes sont activés
[img] est désactivé
[flash] est désactivé
[url] est activé
Les smileys sont désactivés

Revue du sujet
   

Si vous souhaitez joindre un ou plusieurs fichiers, complétez les indications suivantes.

Étendre la vue Revue du sujet : Probabilités, fonction Python

Re: Probabilités, fonction Python

par SoS-Math(33) » sam. 15 févr. 2020 14:40

Merci pour ton message Céline, même si le forum est fait pour aider, c'est toujours plaisant ce genre de retour.
Bonne continuation
A bientôt sur le forum
SoS-math

Re: Probabilités, fonction Python

par Céline » sam. 15 févr. 2020 12:05

bonjour, je souhaitais juste vous remercier, vous m'avez beaucoup aidée !
bonne journée !

Re: Probabilités, fonction Python

par sos-math(21) » jeu. 13 févr. 2020 07:02

Bonjour,
cela dépend de ce que tu as mis comme résultat envoyé par ta fonction trajet.
Si ta fonction trajet() renvoie plusieurs valeurs, cela correspond à un tuple en python.
Comme tu veux le nombre de déplacements, qui correspond au premier terme de ce tuple, il faut appeler ce premier terme soit trajet()[0].
Le script se corrige comme suit :

Code : Tout sélectionner

def moyenne(n):
    somme = 0
    trajet_courant = 0
    for i in range(n):
        trajet_courant = trajet()[0]
        somme = somme + trajet_courant
    return somme/n
Si tu as encore des problèmes à l'exécution, il faudra que tu me renvoies le script complet.
Bonne continuation

Re: Probabilités, fonction Python

par Céline » mer. 12 févr. 2020 22:08

merci
j'ai testé cependant voici ce qui est affiché :
Traceback (most recent call last):
File "/tmp/sessions/7a04ccf19ae2c398/main.py", line 34, in <module>
print (moyenne(100))
File "/tmp/sessions/7a04ccf19ae2c398/main.py", line 32, in moyenne
somme = somme + trajet_courant
TypeError: unsupported operand type(s) for +: 'int' and 'tuple'

je ne comprends pas car avant les listes, cela marchait ... auriez-vous une petite idée ?
Merci, Céline

Re: Probabilités, fonction Python

par sos-math(21) » mer. 12 févr. 2020 21:57

Bonjour,
tu peux créer une liste abscisses et une liste ordonnees.
et tu lui ajoutes la position à chaque fois que celle-ci est modifiée.
Je te fais un exemple avec le renvoi des valeurs :

Code : Tout sélectionner

def trajet_bis():
    machine_x = 0
    machine_y = 0
    nombredeplacements = 0
    abscisses=[0]
    ordonnees=[0]
    while -2<=machine_x<=2 and -2<=machine_y<=2 :
        deplacement = random.randint(1,4)
        if deplacement == 1:
            machine_x = machine_x + 1
            abscisses.append(machine_x)
        if deplacement == 2:
            machine_x = machine_x - 1
            abscisses.append(machine_x)
        if deplacement == 3:
            machine_y = machine_y + 1
            ordonnees.append(machine_y)
        if deplacement == 4:
            machine_y = machine_y - 1
            ordonnees.append(machine_y)
        nombredeplacements =  nombredeplacements + 1
    return nombredeplacements, machine_x, machine_y, abscisses, ordonnees
Bonne continuation

Par exemple, on a un appel :

Code : Tout sélectionner

>>> trajet_bis()
(8, -1, -3, [0, 1, 0, -1], [0, 1, 0, -1, -2, -3])

Re: Probabilités, fonction Python

par Céline » mer. 12 févr. 2020 21:17

par ailleurs, c'est bon pour la moyenne !!! :)

Re: Probabilités, fonction Python

par Céline » mer. 12 févr. 2020 20:43

Céline a écrit :
mer. 12 févr. 2020 14:05
bonjour,
il me faut auparavant créer 2 listes ; une pour x et l'autre pour y, afin de connaître l'état successif où se trouve la machine.
pensez-vous qu'il faut faire " x=[0]" et y=[0] en début de programme puis mettre "return x" et "return y" à chaque étape de la boucle du programme ?
Céline
merci, je vais essayer cela. Vous m'aidez vraiment, c'est pour demain ! Pouvez-vous m'indiquer si ce qui est cité ci-dessus est correct ?

merci encore

Re: Probabilités, fonction Python

par sos-math(21) » mer. 12 févr. 2020 20:26

Bonjour,
ton return est mal placé : il doit intervenir à la fin puisqu'on renvoie la moyenne à la fin du programme.
De plus, ton instruction b=trajet() doit être à l'intérieur de la boucle for, car la fonction trajet est appelée à chaque tour de boucle.
Je te propose une fonction générique qui calcule la moyenne du nombre de déplacements sur n trajets :

Code : Tout sélectionner

def moyenne(n):
    somme = 0
    trajet_courant = 0
    for i in range(n):
        trajet_courant = trajet()
        somme = somme + trajet_courant
    return somme/n

Ensuite, il te restera à l'appeler dans la console

Code : Tout sélectionner

>>> moyenne(100)
10.05
Bonne continuation

Re: Probabilités, fonction Python

par Céline » mer. 12 févr. 2020 20:02

est-ce correct svp ? :
def moyenne (somme):
return(somme/100)
somme=0
trajetcourant=0
b=trajet()
for i in range (100):
trajetcourant=trajetcourant+b
somme=somme+trajetcourant
print(moyenne(somme/100))

merci, Céline

Re: Probabilités, fonction Python

par Céline » mer. 12 févr. 2020 14:05

bonjour,
il me faut auparavant créer 2 listes ; une pour x et l'autre pour y, afin de connaître l'état successif où se trouve la machine.
pensez-vous qu'il faut faire " x=[0]" et y=[0] en début de programme puis mettre "return x" et "return y" à chaque étape de la boucle du programme ?
Céline

Re: Probabilités, fonction Python

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

Re: Probabilités, fonction Python

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

bonsoir,
d'accord merci beaucoup, je vais continuer ...

Re: Probabilités, fonction Python

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

Re: Probabilités, fonction Python

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

Re: Probabilités, fonction Python

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

Haut