selimoba
Messages postés1Date d'inscriptionjeudi 12 novembre 2015StatutMembreDernière intervention12 novembre 2015
-
12 nov. 2015 à 02:11
chris79
Messages postés97Date d'inscriptionlundi 3 octobre 2005StatutMembreDernière intervention 1 février 2016
-
13 nov. 2015 à 14:12
Bonjour je dois ecrire un programme en C mais j'ai beau me casser la tete je n y arrive pas puis je avoir de l aide:
Voici l enonce du probleme:
Le problème de Monty Hall
Contexte
Le problème de Monty Hall est un casse-tête probabiliste librement inspiré du jeu télévisé
«Let's Make a Deal». Il porte le nom de celui qui a présenté ce jeu, Monty Hall. Le jeu va
comme ceci: Dans chaque jeu, trois portes sont présentés au joueur, derrière l'une des
trois portes, il y a un prix et derrière les deux autres portes il n'y a rien. Monty Hall
demande alors au joueur de choisir une porte. La règle du jeu est que l'on donnera au
joueur le prix se cachant derrière la porte qu'il choisit. Après que le joueur choisit une
porte, disons la Porte 1, Monty Hall jette un coup d'oeil à ce qui est derrière les deux
autres portes et ouvre une d'elles. Il dit: «Regardez, il n'y a aucun prix derrière cette
porte!». Comme une seule porte a un prix, il est toujours possible pour Monty Hall de
choisir une autre porte que celle du joueur et cela n'a aucun prix. Supposons que la porte
qu'il ouvre est la Porte 2. Monty Hall continue alors et dit, je vais vous faire une offre: je
vous permettrai de changer votre décision en changeant votre choix à l'autre porte (dans
cet exemple, à la Porte 3). Acceptez-vous l'offre? C'est au joueur de décider s'il veut
passer à la Porte 3 ou de rester avec la Porte 1. Après que le joueur décide de «changer de
porte ou pas», Monty Hall ouvre la porte du choix final. Le joueur obtiendra un prix si et
seulement s'il y a un prix derrière la porte de son choix.
Historiquement il y a eu des débats intenses sur le changement de choix initial
améliorerait la chance de gagner, qui a fait l'émission de télévision très populaire. Dans
ce laboratoire, vous devez développer, un programme qui simule le jeu de Monty Hall et,
examiner ce problème.
Description
Le programme que vous devez écrire comprend deux modes: le mode de jeu et le mode
de recherche. Brièvement, dans le mode de jeu, le programme agira comme Monty Hall
et joue le jeu avec l'utilisateur de programme. Dans le mode de recherche, le programme
permet à l'utilisateur d'étudier ce qui est la probabilité de gagner le prix pour la stratégie
de changement systématique du choix initial et sans effectuer de changement.
Lorsque le programme s'exécute, il affiche d'abord un menu et demande à l'utilisateur de
sélectionner une option:
Entrez l'une des options suivantes:
1. Mode de jeu
2. Mode de recherche
3. Sortie
Ce n'est que lorsque l'utilisateur choisit de quitter sera la sortie du programme. Si
l'utilisateur choisit le mode de jeu et un jeu se termine, le programme revient au menu et
invite l'utilisateur à entrer une option de nouveau. De même si l'utilisateur choisit le
2/3
mode de recherche et la recherche de l'une ou l'autre de deux stratégies se termine, le
programme revient aussi au menu et demande à l'utilisateur de nouveau.
Mode de jeu
Dans le mode de jeu, le programme agit comme Monty Hall et simule un jeu avec
l'utilisateur. Les trois portes seront dénotées par la Porte 1, la Porte 2 et la Porte 3. Le
programme commence par la sélection d'une porte parmi les trois de façon
(uniformément) aléatoire en mettant le prix derrière la porte obtenue. Il demande alors à
l'utilisateur de choisir une porte. Après que l'utilisateur fait son choix, le programme, basé
sur les choix d'utilisateur, «ouvre» une porte que cet utilisateur n'a pas choisie et qui ne
cache pas de prix. Puis, le programme demande à l'utilisateur s'il veut changer. Après que
l'utilisateur décide de changer ou pas, le programme révèle où est le prix et annonce si
l'utilisateur a gagné. En plus de cette tâche principale, le nombre total des jeux que
l'utilisateur a joués dans le mode de jeu et le nombre de fois qu'il gagne devrait aussi être
compté et imprimé après chaque match. Notez que même si un utilisateur quitte le mode
de jeu pour accéder au mode de recherche, ses statistiques dans le mode de jeu (à savoir,
le nombre total de matchs joués et le nombre de gains dans le mode de jeu jusqu'ici)
devraient toujours être conservées. Lorsque l'utilisateur revient à la mode de jeu, le
compte peut être poursuivi.
Mode de recherche
Dans le mode de recherche, le programme demande d'abord à l'utilisateur de choisir d'une
des deux stratégies suivantes: le changement systématique du choix initial et sans
effectuer de changement. Il demande aussi à l'utilisateur d'entrer le nombre (N) de jeux
que l'utilisateur voudrait simuler pour cette stratégie. Alors, pour la stratégie choisie, le
simule N jeux qui se jouent à l'aide de cette stratégie. Dans chaque jeu, le programme agit
de nouveau comme Monty Hall sauf que
1. Aucun message n'est imprimé;
2. Le programme met toujours le choix initiale du joueur à la Porte 1;
3. Si la stratégie «jamais changer» est simulée, le programme met le choix du joueur
«changer ou sans changer» toujours à «sans changer». Si la stratégie «toujours changer»
est simulée, le programme met le choix du joueur «changer ou sans changer» toujours à
«changer».
Dans le mode de recherche, les actions du joueur sont également simulés par le programme et il
n'est pas nécessaire pour l'utilisateur de saisir quoi que ce soit dans un jeu. Après la simulation de
N matchs, le programme imprime le pourcentage où le candidat gagne (qui se rapproche de la
probabilité de gagner, pour grand N).
Exigences
En plus des exigences régulières pour des laboratoires, ce laboratoire exige que vous modularisiez
votre code en termes de fonctions. En particulier, notons que le mode de jeu et le mode de
recherche ont des points communs. Vous devez extraire les parties communes et les mettre dans
des fonctions pour ensuite les appeler dans les deux modes du programme.
3/3
À l'étape 3 du laboratoire où vous avez besoin de développer un organigramme (ou un
algorithme/pseudocode), il est préférable de diviser le diagramme en plusieurs organigrammes
hiérarchiques. En fait, vous allez peut-être de développer un organigramme de haut niveau pour
l'ensemble du programme et deux autres (un pour chaque mode). De plus, pour chaque fonction
créée, vous devriez aussi développer un organigramme.