Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

Algobox DM

Posté par
JenkinsVF
10-12-17 à 13:48

Bonjour, j'ai un devoir maison à faire sur Algobox, mais j'ai un peu de mal à faire l'algorithme, voici l'énoncé et l'algorithme que j'ai essayer de faire :

Une martingale est une méthode censée augmenter les chances de gagner au jeu, ou en tout cas, de limiter les pertes. On s'intéresse au jeu de 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 dite de la martingale « classique » : on mise un euro. 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 programme permettant de simuler cette façon de jouer. Faire afficher en sortie le nombre de partie jouées, la somme totale misée et le gain global

2- Produire un algorithme qui simule plusieurs parties. Que penser de l'intérêt pratique de cette martingale ?

Posté par
JenkinsVF
re : Algobox DM 10-12-17 à 13:50

Oups désolé, je ne peux pas éditer donc je fais un nouveau message...

FONCTIONS_UTILISEES
VARIABLES
  mise EST_DU_TYPE NOMBRE
  nombre_parties EST_DU_TYPE NOMBRE
  somme_totale EST_DU_TYPE NOMBRE
  nombretiree EST_DU_TYPE NOMBRE
  gain_global EST_DU_TYPE NOMBRE
  choix EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
  mise PREND_LA_VALEUR 1
  somme_totale PREND_LA_VALEUR 0
  gain_global PREND_LA_VALEUR 0
  nombre_parties PREND_LA_VALEUR 0
  TANT_QUE (gain_global<0) FAIRE
    DEBUT_TANT_QUE
    LIRE choix
    nombretiree PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,37)
    SI (choix==nombretiree) ALORS
      DEBUT_SI
      gain_global PREND_LA_VALEUR mise*35+mise
      nombre_parties PREND_LA_VALEUR nombre_parties+1
      FIN_SI
      SINON
        DEBUT_SINON
        gain_global PREND_LA_VALEUR gain_global-mise
        mise PREND_LA_VALEUR mise*2
        FIN_SINON
    somme_totale PREND_LA_VALEUR mise+somme_totale
    FIN_TANT_QUE
  AFFICHER somme_totale
  AFFICHER gain_global
  AFFICHER nombre_parties
FIN_ALGORITHME

Posté par
Glapion Moderateur
re : Algobox DM 10-12-17 à 13:56

Salut, la première fois que tu exécutes l'algorithme et que tu passes sur
TANT_QUE (gain_global<0) FAIRE

gain_global vaut 0 donc il n'exécute aucune des instructions de la boucle et saute directement à AFFICHER somme_totale donc ton algorithme va afficher 0 0 0

rectifie ça, mais sinon il est pas mal. (mais on voit que tu ne l'as pas vraiment testé)

Posté par
pgeod
re : Algobox DM 10-12-17 à 14:05

y'a de l'idée.
Cependant plusieurs anomalies :
...........................................................................
  gain_global PREND_LA_VALEUR 0
  TANT_QUE (gain_global<0) FAIRE
--------------- On ne passe jamais dans le boucle !!!

...........................................................................
  nombre_parties PREND_LA_VALEUR 0
  TANT_QUE (gain_global<0) FAIRE
   .....
    SI (choix==nombretiree) ALORS
    ....
      nombre_parties PREND_LA_VALEUR nombre_parties+1
--------------- On n'incrémente le nombre de partie que quand on gagne !!!

Posté par
JenkinsVF
re : Algobox DM 10-12-17 à 16:05

D'accord, j'ai essayer de rectifier cela mais j'ai toujours le soucis du gain global que je n'arrive pas à résoudre :

FONCTIONS_UTILISEES
VARIABLES
  mise EST_DU_TYPE NOMBRE
  nombre_parties EST_DU_TYPE NOMBRE
  somme_totale EST_DU_TYPE NOMBRE
  nombretiree EST_DU_TYPE NOMBRE
  gain_global EST_DU_TYPE NOMBRE
  choix EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
  choix PREND_LA_VALEUR 2
  mise PREND_LA_VALEUR 1
  nombre_parties PREND_LA_VALEUR 0
  gain_global PREND_LA_VALEUR 0
  somme_totale PREND_LA_VALEUR 0
  POUR nombre_parties ALLANT_DE 1 A 100
    DEBUT_POUR
    TANT_QUE (gain_global<0) FAIRE
      DEBUT_TANT_QUE
      LIRE choix
      nombretiree PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,37)
      SI (nombretiree==2) ALORS
        DEBUT_SI
        gain_global PREND_LA_VALEUR mise*35+mise+gain_global
        FIN_SI
        SINON
          DEBUT_SINON
          mise PREND_LA_VALEUR mise*2
          FIN_SINON
      FIN_TANT_QUE
    FIN_POUR
  somme_totale PREND_LA_VALEUR mise+somme_totale
  AFFICHER* somme_totale
  AFFICHER* gain_global
  AFFICHER* nombre_parties
FIN_ALGORITHME

J'ai défini un nombre de parti de 100, cependant quand je test l'algorithme j'obtiens :

1
0
101

Donc 1 somme totale, 0 gain et 101 parties.

Je ne suis pas très très fort en algorithme, c'est mon deuxième ^.^

Posté par
Glapion Moderateur
re : Algobox DM 10-12-17 à 16:29

ne mélange pas une boucle TantQue avec une boucle Pour, une seule suffit !
je te l'ai corrigé :


VARIABLES
	mise EST_DU_TYPE NOMBRE
	nombre_parties EST_DU_TYPE NOMBRE
	somme_totale EST_DU_TYPE NOMBRE
	nombretiree EST_DU_TYPE NOMBRE
	gain_global EST_DU_TYPE NOMBRE
	choix EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
	nombre_parties PREND_LA_VALEUR 0
	mise PREND_LA_VALEUR 1
	nombre_parties PREND_LA_VALEUR 0
	gain_global PREND_LA_VALEUR 0
	TANT_QUE (gain_global==0) FAIRE
		DEBUT_TANT_QUE
		LIRE choix
		nombretiree PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,37)
		nombre_parties PREND_LA_VALEUR nombre_parties+1
		somme_totale PREND_LA_VALEUR somme_totale+mise
		SI (nombretiree==choix) ALORS
			DEBUT_SI
			gain_global PREND_LA_VALEUR gain_global+35*mise
			FIN_SI
			SINON
				DEBUT_SINON
				mise PREND_LA_VALEUR mise*2
				FIN_SINON
		FIN_TANT_QUE	
	AFFICHER* somme_totale
	AFFICHER* gain_global
	AFFICHER* nombre_parties
FIN_ALGORITHME


PS : pour ne pas avoir à saisir le choix à chaque fois on peut aussi le tirer au hasard entre 1 et 37
(tu peux le copier/coller dans algobox en mode éditeur de texte, ou bien directement en ligne dans proglab )

Posté par
pgeod
re : Algobox DM 10-12-17 à 16:30

Globalement je trouve ca moins bien que tout à l'heure.
Et puis il serait plus productif de faire un truc qui marche en répondant à 1/
avant de vouloir faire quelque chose pour répondre à 2/

Posté par
Glapion Moderateur
re : Algobox DM 10-12-17 à 16:36

ha oui, ta boucle Pour c'était pour simuler 100 parties ? je n'avais pas compris.

Posté par
JenkinsVF
re : Algobox DM 10-12-17 à 16:41

Oui, je fais un algorithme pour une partie puis j'analyse et je fais pareil mais avec plusieurs parties (j'ai défini 100 parties)

Posté par
pgeod
re : Algobox DM 10-12-17 à 16:44

JenkinsVF
Pars maintenant de l'algorithme fourni par Glapion
pour répondre à la deuxième question.

Posté par
Glapion Moderateur
re : Algobox DM 10-12-17 à 16:44

oui mais tu devrais partir du mien et l'entourer par un boucle Pour parce qu'il y avait pas mal d'erreurs dans le tien.

Posté par
JenkinsVF
re : Algobox DM 10-12-17 à 16:58

D'accord je vais faire ça merci, cependant j'ai testé l'algorithme et quand j'entre le choix par exemple 2, ça me redemande d'entrer un choix et ça à l'infini, je ne sais pas si c'est fait exprès, j'ai regarder un peu l'algorithme et je ne trouve pas l'erreur (si ça en est une)

Posté par
Glapion Moderateur
re : Algobox DM 10-12-17 à 17:03

ben oui on te demande la valeur que tu choisis à chaque fois.
donc c'est long avant de trouver un numéro gagnant.
remplace LIRE choix par choix PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,37)
et tu n'auras plus à rentrer les nombres que tu choisis.

Posté par
JenkinsVF
re : Algobox DM 10-12-17 à 17:33

Okay c'est bon merci !

Petite question, en soie je n'ai pas besoin de faire un autre algorithme pour plusieurs parties car celui-ci simule déjà un nombre de partis aléatoire ?

Posté par
Glapion Moderateur
re : Algobox DM 10-12-17 à 19:19

celui la simule plein de parties mais une seule fois la méthode.

si on veut étudier d'autres choses comme la somme moyenne qu'il faut investir pour rentrer dans ses fonds par exemple, il faut simuler un grand nombre de fois cette méthode.



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 1726 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 !