Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

Python maths première

Posté par
Liiinnnaaa
17-12-19 à 17:51

Bonjour,
Je n'ai jamais réellement eu de cours sur Python et je ne comprends pas cet exercice, merci d'avance pour votre aide.

(Marche aléatoire)
Un kangourou se trouve en un point d'une route déserte d'Australie occidentale.
À chaque seconde, il saute d'un mètre vers l'avant ou d'un mètre vers l'arrière avec la
même probabilité.

1. Recopier et compléter la fonctionmille_sauts ci-dessous qui simule le déplacement du
kangourou et qui renvoie la position du kangourou après avoir effectué mille sauts.

from random import random
def mille_sauts():
position=0
for i ... :
if ... :
position=position+1
else:
position=position-1
return position
        
2. Exécuter la fonction mille_sauts plusieurs fois.
Quelle est la plus grande valeur renvoyée ?

3. En utilisant la fonction précédente, écrire le script d'une fonction cent_metres qui si-
mule n expériences de mille sauts et qui renvoie le nombre de fois où le kangourou a
avancé de plus de 100 mètres à la fin des mille sauts lors de ces n expériences.

4. Exécuter la fonction cent_metres pour n = 10 000. Commenter.

Posté par
Kernelpanic
re : Python maths première 17-12-19 à 18:04

Salut,

tu sais ce que représente le for etc... ?
le principe c'est de faire 1000 sauts d'où la boucle
après on va générer des proba et regarder si, par exemple, la proba génerée est plus grande que 0.5 et avancer dans ce cas

Posté par
mathafou Moderateur
re : Python maths première 17-12-19 à 18:15

Bonjour,

ce que doit faire l'algorithme "en français" à la seule définition de la façon de sauter du kangourou :

répéter 1000 fois
     si un nombre aléatoire est ...
         alors avancer de 1
     sinon 
         reculer de 1
quand c'est fini donner la position finale


tout est quasiment traduit mot à mot en Python

il reste donc à compléter
la boucle "for" pour qu'elle s'exécute 1000 fois
le test du nombre aléatoire et comment l'obtenir

pour cela il faut aller regarder la doc de Python :
comment s'écrit une boucle for
que fait random et comment on l'utilise

la connaissance de l'anglais est bien utile :
"random" veut dire "aléatoire, au hasard",
"for" veut dire "pour"
etc

et il faudra faire attention à une propriété fondamentale de Python : l'indentation
le nombre d'espaces définit le bloc dans lequel on est
comme ce que j'ai écrit ci dessus
cela remplace les "debut ... fin" qu'on a dans d'autres langages

le programme donné dans l'énoncé DOIT impérativement être écrit avec les bons nombres d'espaces en debut de chaque ligne

from random import random
def mille_sauts():
    position=0
    for i ... :
        if ... :
            position=position+1
        else:
            position=position-1
    return position

sinon ça ne veut rien dire
et Python ne marche pas (erreur de syntaxe au mieux, au pire fait n'importe quoi d'autre que ce qu'on veut)



Posté par
Liiinnnaaa
re : Python maths première 17-12-19 à 18:39

Salut,
D'accord je comprends mieux
Du coup pour le for il faut mettre 999 qui correspond au nombre de sauts restants ?
Et en dessous if random < 0,5 ?

Posté par
mathafou Moderateur
re : Python maths première 17-12-19 à 19:07

for i 999 ça ne veut rien dire

je t'avais conseillé d'aller lire la doc de Python ! l'as tu fait ?
(pas tout !!, ce qui concerne for et random et ce dont il est question dans ces articles là, comme range(...))

for variable in liste
exécute la boucle avec la variable qui prend successivement toutes les valeurs de la liste

donc ici il faut créer une liste de 1000 nombres 1, 2, ... 1000
ou bien 0, 1, ... 999
cela se fait par l'instruction range( ...)
for i in range(....)

idem voir la doc de range(...)
range(1000) génère 1000 nombres de 0 à 999
et i prendra successivement chacune de ces valeurs
de sorte que la boucle sera effectuée 1000 fois faisant faire 1000 sauts au kangourou
(y pas de "'il en reste ..." on effectue1000 sauts point barre)

donc ce sera au final :
for i in range(1000) :

pour random il s'agit d'une fonction (lire la doc disais-je)
cela s'écrit random()

donc
if random() < 0.5 :

(ne pas oublier les deux points en fin de la ligne if et de la ligne for, ils font partie de la syntaxe)

Posté par
Liiinnnaaa
re : Python maths première 17-12-19 à 19:31

J'ai exécuté le programme et 43 s'est affiché,
Est-ce que plusieurs valeurs différentes peuvent être affichées après l'execution dun programme ?

Ps: j'ai lu une documentation sur python sur les points essentiels de l'exercice  

Posté par
mathafou Moderateur
re : Python maths première 17-12-19 à 19:51

Est-ce que plusieurs valeurs différentes peuvent être affichées

bien sur puisque c'est aléatoire

ça peut prendre toutes les valeurs entre -1000 (s'il ne fait que reculer tout le temps) et +1000 (s'il ne fait que avancer tout le temps)
même si ces valeurs extrêmes ne seront en pratique jamais obtenues
c'est comme tirer 1000 fois de suite à pile ou face, et obtenir 1000 fois pile
rien ne l'empêche ... (!!)

c'est pour ça que la question suivante demande de relancer plusieurs fois le programme et de noter les valeurs obtenues, en particulier la valeur maximale obtenue lors de cette campagne d'essais
(chacun obtiendra une valeur à priori différente ...)

et que dans la question encore suivante on demande d'automatiser ce processus en créant un programme qui lance cette fonction mille_sauts() plusieurs fois, dans une boucle.

Posté par
Liiinnnaaa
re : Python maths première 17-12-19 à 19:56

D'accord merci beaucoup



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1742 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !