Algorithme

Olympiades mathématiques, énigmes et défis
Clara3966
Membre Naturel
Messages: 39
Enregistré le: 20 Aoû 2018, 17:50

algorithme

par Clara3966 » 26 Aoû 2018, 11:21

Bonjour, ;)

Je dois réaliser un algorithme mais n'ayant jamais étudié en classe, du moins très rapidement sans réelle explication j'ai quelque peu du mal a comprendre comment cela fonctionne… :oops:

Voici l'énoncé :

(…)

Il utilise la méthode de la martingale :

On s'interresse au jeu de la roulette et on suppose que l'on réalise une mise simple. On a donc une chance sur 37 de gagner, et dans ce cas on remporte 35 fois la mise, plus la mise.

On suit la méthode de la martingale cléassique :
On mise un euros
Si on gagne, on s'arrête.
Si on perd, on recommence, en doublant la mise.
On s'arrête au premier tirage gagnant.

1- Ecrire un algorithme permettant de simuler cette façon de jouer. Faire afficher le nombre de parties jouées, la somme totale, et le gain global.

Voici les quelques pistes que j'ai trouvé même si je pense que la plus grande partie est fausse… : :rouge:

SAISIR x< ou égal à 37
SAISIR N= 1 (la mise)
SAISIR A (un nombre aléatoire donné par la roulette)
SAISIR P (le nombre de parties jouées)
SAISIR G (la somme gagné)

WHILE x différent de A
DO (ici je ne sais pas trop quoi faire.. je suis censé dire qu'il faut entrer un nouveau A donné par la roulette)
DO P+1
DO Nx2
(je ne vois pas ensuite comment préciser que G=0, du moins le mot qu'il faut placer devant)

END WHILE

AFFICHER P, N, G



aviateur
Habitué(e)
Messages: 3853
Enregistré le: 19 Fév 2017, 10:59

Re: algorithme

par aviateur » 26 Aoû 2018, 11:35

Bonjour, dommage là je n'ai pas trop le temps mais vite fait: "je suis censé qu'il faut ...." et bien oui. C'est la première chose qui me saute au yeux.

Il faut comprendre que tu fais une opération (ici un tirage aléatoire) un certain nombre de fois tant que une certaine condition n'est pas réalisée.

Cette répétition est dans une boucle , ici un tant que . Donc tu dois voir au moins cela dans ta boucle. Il y a surement autre chose à y mettre....

Clara3966
Membre Naturel
Messages: 39
Enregistré le: 20 Aoû 2018, 17:50

Re: algorithme

par Clara3966 » 26 Aoû 2018, 11:48

aviateur a écrit:Bonjour, dommage là je n'ai pas trop le temps mais vite fait: "je suis censé qu'il faut ...." et bien oui. C'est la première chose qui me saute au yeux.

Il faut comprendre que tu fais une opération (ici un tirage aléatoire) un certain nombre de fois tant que une certaine condition n'est pas réalisée.

Cette répétition est dans une boucle , ici un tant que . Donc tu dois voir au moins cela dans ta boucle. Il y a surement autre chose à y mettre....


Oui mais je ne vois pas comment écrire celà :|

Etant donné qu'après un WHILE il me semble que je ne peux pas écrire SAISIR A :?

aviateur
Habitué(e)
Messages: 3853
Enregistré le: 19 Fév 2017, 10:59

Re: algorithme

par aviateur » 26 Aoû 2018, 11:52

Je ne sais pas ce que tu entends par saisir (une donnée qu'on entre à la main? alors ça non.

Je dirai plus tôt quelque chose comme
"Calcule A un nombre aléatoire compris en un et 37"

Et puis avant tout il y a la question de ce que tu entends par écrire un algorithme qui...

Cela peut être un algorithme écrit en pseudo langage
ou alors un algorithme écrit déjà en langage déjà choisi à l'avance.

C'est pour cela que c'est un peu long à t'aider mais quelqu'un va peut être prendre le relais.
Modifié en dernier par aviateur le 26 Aoû 2018, 11:54, modifié 1 fois.

Clara3966
Membre Naturel
Messages: 39
Enregistré le: 20 Aoû 2018, 17:50

Re: algorithme

par Clara3966 » 26 Aoû 2018, 11:54

aviateur a écrit:Je ne sais pas ce que tu entends par saisir (une donnée qu'on entre à la main? alors ça non.

Je dirai plus tôt quelque chose comme
"Calcule A un nombre aléatoire compris en un et 37"


Oui mais le truc c'est que je n'ai jamais vu comment tous celà fonctionnait, c'est très flou pour moi :|

aviateur
Habitué(e)
Messages: 3853
Enregistré le: 19 Fév 2017, 10:59

Re: algorithme

par aviateur » 26 Aoû 2018, 11:56

Désolé mais il faut passer plus de temps. Il faut établir ici une bonne base de travail.

Clara3966
Membre Naturel
Messages: 39
Enregistré le: 20 Aoû 2018, 17:50

Re: algorithme

par Clara3966 » 27 Aoû 2018, 21:00

aviateur a écrit:Désolé mais il faut passer plus de temps. Il faut établir ici une bonne base de travail.


Pouvez vous me montrer comment vous l'auriez écrit svp, je ne m'en sors pas et ca me permettrai de comprendre

aviateur
Habitué(e)
Messages: 3853
Enregistré le: 19 Fév 2017, 10:59

Re: algorithme

par aviateur » 28 Aoû 2018, 01:00

Bonjour
1. D'abord j'écris en "pseudo-langage" (c'est à dire que j'écris l'algorithme sans savoir a priori dans quel langage on va écrire cet algorithme, langage qui dépend évidemment du logiciel que l'on va utiliser.)
Avant de commencer, on peut réfléchir un peu aux différentes variables qui vont entrer en jeu et leur donner un nom. (rien n'empêche de changer les noms si tu veux mais perso j'utilise des noms très parlant)

2. Quels sont ces variables? mise (la mise), nbreparties (le nombre de parties) partiegagnée ( un nombre qui vaut 0 si la partie n'est pas est gagnée, 1 sinon.... Il se peut que j'en oublie mais au fur et à mesure que j'écris l'algorithme j'ajouterai la variable au bon endroit.
D'autre part il faut penser que l'on va jouer assez souvent. Il faut penser à modélisé ce jeu:
Pour cela on va tirer un nombre au hasard (selon la loi uniforme) parmi les entier de 0 à 36. Et on décide que si le zéro sort, on gagne. Pour simplifier l'écriture j'écrirai X=random()
ce tirage au hasard.

3. Ensuite assez souvent un algo est constituée de 3 parties
partie 1 : initialisation
partie 2: corps de l'algorithme (c'est là que l'on fait tous les calculs, souvent il y a une ou des boucles )
partie 3 : Affichage ou sorties des résultats.

4. Je commence donc l'algo:

initialisation :

* mise=1
* partiegagnée=0
* nombredeparties=0
* sommedépensée=0
Corps du programme
* tant que (partiegagnée=0) faire [début de boucle remarque j'ai initialisé partiegagne à 0 pour entrer dans la boucle]
* nombredeparties=nombredeparties+1 (c'est un compteur qui va augmenter de 1 à chaque fois que l'on passe dans la boucle]
* sommedépensée=sommedépensée+mise [je calcule à chaque la somme totale dépensée]
* X=rand() [je joue]
* Si X=0 alors partiegagne= 1 [c'est un test si X vaut zéro cela veut dire que l'on a gagné
alors on ne pourra plus entrer dans la boucle, l'ago continuera après la fin de boucle
* mise=2 * mise [on n'oublie pas de changer la mise elle est doublé à chaque fois.
*fin du tant que [fin de la boucle tant que ]

Affichage
je te laisse finir l'algo.

Clara3966
Membre Naturel
Messages: 39
Enregistré le: 20 Aoû 2018, 17:50

Re: algorithme

par Clara3966 » 28 Aoû 2018, 20:41

aviateur a écrit:Bonjour
1. D'abord j'écris en "pseudo-langage" (c'est à dire que j'écris l'algorithme sans savoir a priori dans quel langage on va écrire cet algorithme, langage qui dépend évidemment du logiciel que l'on va utiliser.)
Avant de commencer, on peut réfléchir un peu aux différentes variables qui vont entrer en jeu et leur donner un nom. (rien n'empêche de changer les noms si tu veux mais perso j'utilise des noms très parlant)

2. Quels sont ces variables? mise (la mise), nbreparties (le nombre de parties) partiegagnée ( un nombre qui vaut 0 si la partie n'est pas est gagnée, 1 sinon.... Il se peut que j'en oublie mais au fur et à mesure que j'écris l'algorithme j'ajouterai la variable au bon endroit.
D'autre part il faut penser que l'on va jouer assez souvent. Il faut penser à modélisé ce jeu:
Pour cela on va tirer un nombre au hasard (selon la loi uniforme) parmi les entier de 0 à 36. Et on décide que si le zéro sort, on gagne. Pour simplifier l'écriture j'écrirai X=random()
ce tirage au hasard.

3. Ensuite assez souvent un algo est constituée de 3 parties
partie 1 : initialisation
partie 2: corps de l'algorithme (c'est là que l'on fait tous les calculs, souvent il y a une ou des boucles )
partie 3 : Affichage ou sorties des résultats.

4. Je commence donc l'algo:

initialisation :

* mise=1
* partiegagnée=0
* nombredeparties=0
* sommedépensée=0
Corps du programme
* tant que (partiegagnée=0) faire [début de boucle remarque j'ai initialisé partiegagne à 0 pour entrer dans la boucle]
* nombredeparties=nombredeparties+1 (c'est un compteur qui va augmenter de 1 à chaque fois que l'on passe dans la boucle]
* sommedépensée=sommedépensée+mise [je calcule à chaque la somme totale dépensée]
* X=rand() [je joue]
* Si X=0 alors partiegagne= 1 [c'est un test si X vaut zéro cela veut dire que l'on a gagné
alors on ne pourra plus entrer dans la boucle, l'ago continuera après la fin de boucle
* mise=2 * mise [on n'oublie pas de changer la mise elle est doublé à chaque fois.
*fin du tant que [fin de la boucle tant que ]

Affichage
je te laisse finir l'algo.


Merci d'avoir pris le temps de m'expliquer! C'est vraiment sympa, je vais travailler celà dès maintenant, je devrais m'en sortir désormais :D

 

Retourner vers ⚔ Défis et énigmes

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 5 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite