enoncé : on tire au dé
-si le 6 sort le lièvre a gagné (en 1 coup).
-la tortue doit faire 5 avancées. elle fait une avancée si le dé fait 1 ,2,3,4 ou 5.
qui a le meilleur sort?
on propose ce code dont j'ai remplacé : If int(rand*6+1) <6 ( que signifie ?) par
If entAleat (1,6) <6
CODE
0-> P
0-> V
prompt N
While P < N
P+1->P
0->1
0->A
While I<6
I+1->I
If entAleat (1,6) <6
Then
A+1->A
End
End
If A=6
Then
Disp “TORTUE”
V+1->V
Else
Disp “LIEVRE”
End
End
Disp V
Si N=5 par exemple l'écran affiche 5 fois tortue.
A quoi sert la variable I?
De plus ici est-ce bien un 6 qui fait gagner le lèvre?
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Ven 31 Aoû 2012, 18:10
Un sujet portant sur cet algorithme existe il me semble.
Quelqu'un a ajoûté une boucle en fonction de N pour réitérer plusieurs fois l'expérience.
La boucle en fonction de I sert à générer 6 avancées de la tortue à chaque expérience.
Lorsqu'un tirage donne un aléatoire inférieur à 6, le compteur A d'avancée de la tortue est incrémenté.
Le programmeur a supposé que si le compteur A d'avancées de la tortue est inférieur à 6 après les 6 tirages, cela signifie que le lièvre a avancé au moins une fois, d'où une victoire automatique du lièvre.
Traductions :
rand=NbrAléat
int(X)=ent(X)
randInt(A,B)=entAléat(A,B) // n'est pas disponible dans la TI82 non-stat
Equivalence :
randInt(1,N)=int(1+N*rand)
If int(rand*6+1)<6 // si l'aléatoire compris entre 1 et 6 est inférieur à 6
La boucle For() est préférable à la boucle Repeat qui l'est à la boucle While dans la plupart des situations pouvant être abordées par cet algorithme.
Code
EffVar VPrompt N // édité pour ajouter EffVar V
For(P,1,N
0->A
For(I,1,5
If entAleat(1,6)<6
A+1->A
End
If A=5
Then
Disp “TORTUE”
V+1->V
Else
Disp “LIEVRE”
End
End
Disp V
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 01 Sep 2012, 18:00
Bien !
Je n'utilise pas toujours les fonctions de liste, surtout quand il s'agit de rester cohérent avec les attentes de débutants à qui l'algorithmie est enseignée au lycée.
Pour mes amours de bourrins :
Code
Prompt N
sum(seq(5=sum(6>randInt(1,6,5)),B,1,N
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)