Bonjour, j'ai un algorithme a faire pour la rentrée et je ne comprends pas le logiciel algobox.
Pourriez-vous m'aider?
Voici l'énoncé:
Le jeu du lièvre et de la tortue se joue de la manière suivante:
on jette un dé (non truqué). si le résultat est 6, le lièvre atteint directement l'arrivée de la course.
Si le résultat n'est pas 6, la tortue avance d'une étape sur les six nécessaires pour atteindre l'arrivée.
Le gagnant est celui qui arrive le premier.
Après le professeurs nous a mis:[i][/i]
initialisation: l,r,i (entiers).
traitement:
pour i variant de 1 à 6
r prend la valeur aléatoire entière entre 1 et 6.
Si r vaut 6 alors
l prend la valeur 1
Fin de si
fin de pour
SORTIES
Si l vaut 1 alors
afficher "..."
Sinon
afficher "..."
merci d'avance
Bonjour,
j'ai déjà aidé un élève qui avait cet exercice, pour la partie calcul. Je n'ai pas algobox, mais comme les algoritmes sont à la mode, je veux bien apprendre.
On le trouve où ?
tu vas sur le site: http://www.xm1math.net/algobox.
tu pourra telecharger la nouvelle version du logiciel
Je te mets un lien vers le topic qui en parlait, clique ici DM sur l'algorithmique et probabilités
Bonjour lbds,
Bonjour borneo
Un tout petit coup de pouce (passage délicat) :
r PREND_LA_VALEUR round(0.5001+5.9998*random())
Plus sur demande...
Bon, l'aide est très incomplète. Je n'ai pas trouvé la syntaxe pour obtenir :
r prend la valeur aléatoire entière entre 1 et 6
Tu la connais ?
Merci Coll, je n'avais pas lu ton message. Effectivement, j'aurais pu chercher longtemps. J'ai essayé
random(1:6) et random(1;2;3;4;5;6)
mais j'étais loin de ce que tu proposes
La réponse est mon message de 13 h 38
Algobox connaît une fonction random() comme de nombreuses calculatrices ou de nombreux tableurs. Mais cette fonction renvoie un nombre réel compris entre 0 et 1
Il faut en faire un nombre entier, compris entre 1 et 6, et, si possible, donner à chacune de ces 6 valeurs possibles la même probabilité.
Pour obtenir un nombre entier, j'utilise round() qui renvoie l'entier le plus proche.
D'où ma proposition :
5.9998*random() renvoie un nombre de 0 à 5,9998 avec équiprobabilité (enfin, on l'espère ; j'ai fait quelques tests simples qui donnent plutôt confiance).
0.5001 + 5.9998*random() renvoie un nombre de 0,5001 à 6,4999 (toujours avec équiprobabilité)
round(0.5001 + 5.9998*random()) renvoie un nombre entier de 1 à 6 avec quasi-équiprobabilité
D'accord ?
Pour mémoire :
programme
Voilà, ça marche :
Je ne suis pas helléniste (à mon grand regret) mais le préfixe "algo" me laissait présager des débuts difficiles
Voici le mien :
1 VARIABLES
2 i EST_DU_TYPE NOMBRE
3 l EST_DU_TYPE NOMBRE
4 r EST_DU_TYPE NOMBRE
5 DEBUT_ALGORITHME
6 l PREND_LA_VALEUR 0
7 POUR i ALLANT_DE 1 A 6
8 DEBUT_POUR
9 r PREND_LA_VALEUR round(0.5001+5.998*random())
10 SI (r==6) ALORS
11 DEBUT_SI
12 l PREND_LA_VALEUR 1
13 FIN_SI
14 FIN_POUR
15 SI (l==1) ALORS
16 DEBUT_SI
17 AFFICHER "Le lièvre a gagné"
18 FIN_SI
19 SINON
20 DEBUT_SINON
21 AFFICHER "La tortue a gagné"
22 FIN_SINON
23 FIN_ALGORITHME
Coll : je me souviens que tu m'avais conseillé ce logiciel, mais à l'époque, je l'ai trouvé plus difficile à utiliser qu'un tableur. Je n'ai donc pas beaucoup cherché à m'en servir.
Mais il va falloir que j'apprenne à m'en servir, car il y a des demandes d'aide auxquelles personne ne répond.
Je confirme ma première impression : j'ai dû faire deux ou trois exemples du tutoriel avant de comprendre comment ça fonctionne. J'en étais à chercher la fonction ALEA.ENTRE.BORNES( )... sans même imaginer que c'était à moi d'adapter une fonction existante.
Bref, le fonctionnement n'est pas très intuitif, mais avec le tutoriel, on y arrive.
Quant à donner ça à des élèves de seconde, sur un exercice de proba incomplet, qu'ils n'ont pas compris... je trouve ça limite.
Je me demande si le prof qui a donné cet exercice l'a fait lui-même avant
lbds : ne tiens pas compte de ce que j'ai posté, je testais juste la formule qui donne la valeur entière entre 1 et 6. La mienne faisait bugger l'algorithme.
Je n'ose pas raconter ce que fut mon premier cours de programmation...
Je crois beaucoup à l'apprentissage par la lecture de programmes rédigés.
C'est pour cela que, contrairement à mon habitude, je donne les solutions très vite pour ces exercices nouveaux au programme. Il y a des élèves qui accrochent bien et s'amusent ensuite (preuve que c'est alors gagné pour eux ! ).
Quant à l'étymologie, je crois que c'est la même que celle d'algèbre, et donc l'origine est arabe. Ainsi cela ne doit pas se faire dans la douleur de "-algie"...
Ton message de 14 h 35
Oh, là j'en bave !
J'exporte le programme : "Exporter code vers fichier texte"
J'ouvre avec Notepad le fichier texte (surtout pas avec un logiciel "savant" comme Word qui rajoute 40 ko de baratin caché).
Copier et
coller dans la fenêtre du site
Ensuite je fais quelque chose de très long que tu ne devrais pas avoir à faire : je crée les espaces de mise en page à grand renfort de "& n b s p ;" (sans les espaces ; c'est le code de "non breaking space") : ceci pour imposer ces espaces qui ne seraient pas conservés autrement car les correcteurs et modérateurs peuvent poster du texte en html ce qui dans ce cas se révèle être un gros handicap.
Simple précaution, peut-être inutile...
Avant de lancer le "traitement" j'impose à la variable l la valeur zéro (c'est-à-dire, "la tortue gagne").
Si un six est tiré en ligne 9 alors la valeur de l sera passée à 1 à la ligne 12 ("le lièvre gagne")
Je ne sais pas (c'est peut-être dans le tutoriel) comment les variables sont initialisées ni même si elles le sont ; donc je mets cette ligne 6 et je n'ai pas de mauvaise surprise.
merci beaucoup pour votre aide.
Mais comment faire pour conjecturer si c'est le lièvre ou la tortue qui a le plus de chance d'être gagnant
Moi, je viens de le faire 20 fois
le lièvre a gagné 12 fois et la tortue 8 fois
Voilà mon algorithme (complet, cette fois)
une derniere chose et je te laisse tranquil. comment on fait pour obtenir la frequence des victoires du lievre et celle des victoires de la tortue sur n parties.
Bonjour, j'ai le même exercice à faire mais je ne trouve pas comment faire l'algorithme sur la calculatrice. Si quelqu'un pourrait m'aider SVP?
Merci
Bonjour,
J'ai trouvé une autre solution pour "round(0.5001 + 5.9998*random())".
Cela revient au meme mais il me semble que c'est un peu plus simple:
round(6*random()+1).
Bonjour,
Tu as "pratiquement" raison.
Mais théoriquement... non ; en effet random() peut prendre la valeur 1
et dans ce cas
round(6*random()+1) = 7
ce qui est impossible pour une face de dé.
non sa ne donne jamais 7, essaye sur algobox tu verras.
Voici l'exemple d'un algobox avec juste cette fonction, teste là sur algobox.
A bientot
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :