Bonjour tout le monde
Mon sujet est le suivant : soit n un entier supérieur ou égal à 4
Dans un sac on place n jetons : un rouge et tous les autres blancs. On tire successivement au hasard et avec remise deux jetons de l'urne.
On gagne :
• 16euros si on dire deux fois le jetons rouges
• 1euros si on tire deux fois un jetons blanc
• on perd 5 euros dans les autres cas
Soit X la variable aléatoire égale au gain du joueur
Écrire un programme algobox qui simule 1000 parties du jeu précédent avec n = 8 et qui affiche le gain moyen du joueur sur ces 1000 parties.
Aidez moi s'il vous plaît je n'y arrive vraiment pas 😞
pour l'algo :
on doit afficher le gain moyen pour 1000 parties : on sait déjà ce que l'on devra avoir en sortie.
---
commençons par regarder comment simuler 1 partie (pour les 1000, on fera donc une boucle « de 1 à 1000 »)
il y a plusieurs façons de s'y prendre, je t'en propose une.
à chaque partie, on doit « tirer » 2 jetons.
- pour simuler le tirage de chaque jeton, on peut passer par un nombre aléatoire
j'ai pris la commande « ALGOBOX_ALEA_ENT(1,2) » qui retourne soit 1 soit 2
on définit dès le départ (par exemple) :
1 pour Rouge
2 pour Blanc
on peut ensuite, par addition ou multiplication, comme on veut, attribuer le gain correspondant à la partie (tests).
- on cumule le gain de cette partie dans une variable T (pour total)
- on incrémente une variable n qui compte le nombre de parties
---
au terme des 1000 simulations de jeux, on affiche la moyenne T/n
---
avant de te lancer dans la programmation, réfléchis à la structure de ton algo
- choix des variables nécessaires
- affectation de variables
- boucles et détail des tests dans le corps du traitement
- affichage en sortie
après réflexion...
- on incrémente une variable n qui compte le nombre de parties ---> ceci est parfaitement inutile
au terme des 1000 simulations de jeux, on affiche la moyenne T/1000
Bonjour,
attention, on n'a pas une chance sur deux d'avoiur rouge !!
tirer au hasard un nombre entier entre 1 et 8 (de façon générale entre 1 et n si n jetons)
si ce nombre est 1 c'est le jeton rouge
sinon c'est un jeton blanc
je viens de tester l'algo, la commande ALGOBOX_ALEA_ENT(1,2)ne convient pas car elle correspond à une proba de ½ pour chaque couleur.
j'ai remplacé par ALGOBOX_ALEA_ENT(1,8), suivi de test, et on se rapproche ainsi du E(X) que l'on trouve pas calcul
tu commences par la fin, il me semble.
as-tu compris ce que tu dois faire?
quelles sont les variables que tu dois définir ? les tests? etc.
explique ce que tu as compris ou pas compris dans mon message de 15h22
comment on fait pour définir sa : "on définit dès le départ (par exemple) :
1 pour Rouge
2 pour Blanc "?
on définit dès le départ : s'il sort "1", ce sera un jeton Rouge, sinon ce sera un jeton Blanc --- je l'ai décidé avant de commencer l'algo, parce qu'il faut fixer une "règle", mais tu peux choisir autre chose
----
pour chaque jeton, on choisit un nom de variable (par ex. j1 pour le 1er jeton et j2 pour le second)
puis, pour chacun, on "tire" un nombre aléatoire par la commande « ALGOBOX_ALEA_ENT(1,8) »
la machine va donc retourner un nombre, compris entre 1 et 8 (au sens large)
et nous, on veut que ça représente une couleur :
- rouge si le nombre j1 est 1 ---- il y a bien 1 chance sur 8 d'avoir rouge
- blanc si c'est 2, 3, ..., 8 ---- il y a bien 7 chances sur 8 d'avoir blanc
==> on prévoit donc de faire un test sur la valeur j1 retournée par l'algo :
si j1 1 alors le nombre devient 2
on a ainsi soit 1 soit 2 dans la variable j1 qui représente la couleur du jeton tiré,
et ensuite, on pourra utiliser j1 et j2 pour attribuer le gain à la partie
tu vois ? suis-je claire, là ?
avant de déclarer quoi que ce soit et d'écrire dans Algobox il s'agit de clarifier l'algorithme
un algorithme n'est pas une écriture dans Algobox :
ça, ça s'appelle un programme sur Algobox, matérialisation d'un algorithme dans un langage particulier (le langage Algobox) sur une machine particulière (sur un PC)
un algorithme est la description précise des opérations à effectuer et de leur enchainement.
quelle est la structure générale de l'algorithme (boucles, test, calculs, etc)
quelle sorte de calculs je dois faire, sur quoi, quel est le but
quels variables vais-je utiliser pour représenter quoi
ça se fait en langage naturel (en français ordinaire avec la grammaire du français ordinaire)
pour élaborer cette structure on doit avoir des idées clairs sur le but à atteindre et une façon d'atteindre ce but
(théories mathématiques, beaucoup de bons sens, cahier de charges ...)
ici on nous dit que l'on doit réaliser 1000 parties
donc une première architecture sera (1er jet)
répéter 1000 fois
faire une partie.
cela semble peut être évident mais l'écrire explicitement évitera de se tromper ensuite.
quel est le but ? estimer le gain du joueur
au départ le gain est nul
donc
gain = 0
répéter 1000 fois
faire une partie en accumulant les gains
résultat : l'espérance mathématique = le gain total / 1000
ça commence à prendre forme et on a déja une variable évidente : la variable "gain"
on va maintenant détailler un peu plus sur la façon de faire une partie
une partie c'est tirer au hasard deux jetons et observer leurs couleurs, pour en déduire le gain de cette partie
faire une partie :
tirer deux jetons au hasard, de couleurs A et B
si A = B = rouge alors le gain de cette partie est 16
si A = B = blanc alors le gain est 1
sinon la perte est 5 (le gain est -5)
cumuler ce gain au gain total.
l'algorithme cherché commence donc à ressembler à
gain = 0
Répéter 1000 fois
tirer deux jetons au hasard, de couleurs A et B
si A = B = rouge alors le gain de cette partie est 16
si A = B = blanc alors le gain est 1
sinon la perte est 5 (le gain est -5)
cumuler ce gain au gain total.
résultat : l'espérance mathématique = gain / 1000
on a maintenant 3 variables :
le gain
la couleur du 1er jeton
la couleur du 2ème jeton
une 4ème variable est implicite dans "répéter 1000 fois" : une variable pour compter ces 1000 fois
etc.
on précise de proche en proche et petit à petit jusqu'à avoir un algorithme achevé, prêt à être traduit dans la syntaxe que l'on veut, par exemple en Algobox, ou sur une calculette ou en Scratch ou n'importe quoi.
la principale erreur des "débutants" est de vouloir aller trop vite dans la réalisation d'un algorithme et de vouloir se précipiter immédiatement sur son clavier pour taper du code Algobox (ou du C ou des touches de calculette)
c'est généralement la quasi certitude de :
ne rien comprendre à ce qu'on (a) fait
d'avoir des erreurs multiples quasi impossible à diagnostiquer tellement il y en a
d'avoir des programmes conçus de bric et de broc impossible à faire évoluer ou modifier, voire qui "tombent en marche" par hasard.
\\ P(X=2)=\frac{1}{n^2}
\\ P(X=0)=\frac{(n-1)^2}{n^2}
\\ P(X=1)=P(RB)+P(BR)=\frac{1.(n-1)}{n^2}+\frac{(n-1).1}{n^2}=\frac{2(n-1)}{n^2}
c'est juste ?
martrbo je suppose que ton dernier message m'était adressé,
parce qu'en 1 minute, tu n'as pas eu le temps de lire attentivement et méditer et (ne pas) comprendre l'explication progressive et détaillée que mathafou a rédigée.
prends le temps de relire son message, tranquillement, crayon en main.
c'est des questions précédentes?
les valeurs de X sont inexactes ('fin, si je comprends la question posée)
pour le latex : tu dois encadrer l'écriture par les balises [/tex]
après rectification des valeurs de X, ça donne ça :
... mais pour l'algo, tu n'as pas besoin de tout ça, d'accord ?
----
je sais pas quel "bouton" utiliser dans algobox..
je suppose que si le professeur a donné cet exercice, c'est que vous devez en avoir fait en cours préalablement, me trompe-je ?
commence par mettre au point l'algorithme en langage naturel, bien détaillé - et pour ça, faut transpirer un peu
la programmation, on verra ensuite.
(je recherche des liens de prise en main et je reviens)
P(X=2) etc
de toute façon ça n'a rien à faire dans la simulation des 1000 parties ...
et comme a dit carita et comme je l'ai dit aussi
il ne faut JAMAIS commencer par se précipiter sur des "boutons" et Algobox ou calculete ou quoi
l'algorithme ça s'écrit avec un papier et un crayon
pas en cliquant sur des boutons !
je te répète que tu mets la charrue avant les boeufs comme on dit
on écrit d'abord l'algorithme papier crayon (toujours pas terminé)
puis ensuite on le traduit sur Algobox
oui mais j'ai pas beaucoup de temps je dois l'envoyer aujourd'hui avant 19h15 et sa fait depuis cet aprem Que j'essaye mais j'y arrive pas ... et je dois a tout pris réussir ou mon trimestre va être rater
ah d'accord tu veux qu'on te donne un algorithme tout fait comme ça ....
sans rien en apprendre du tout et donc ne pas utiliser cet exo pour progresser, juste pour "avoir des notes"...
pas de moi en tout cas.
(vu que tu n'as même pas cherché à écrire quoi que ce soit toi même
si encore tu avais essayé, on aurait pu te compléter et te corriger, maintenant pour 19h15 c'est trop tard)
j'ai fait :
variable : JETON_B EST_DU_TYPE_NOMBRE
JETON_REST_DU_TYPE_NOMBRE
T EST_DU_TYPE_NOMBRE
N EST_DU_TYPE_NOMBRE
DÉBUT ALGORITHME
JETON_R PREND LA VALEUR 1
JETON_B PREND LA VALEUR2
t PREND LA VALEUR JETON B + JETON R
POUR N ALLANT DE 1 à 1000
DEBUT POUR
AFFICHER CALCUL ALGOBOX_ALEA_ENT(1,8)
SI ( JETON R) ALORS
DEBUT SI
AFFICHER JETON R
JETON R PREND LA VALEUR 1
FIN SI
SI JE TON B ALORS
DEBUT SI
AFFICHER JETON B
JETON B PREND LA VALEUR 2,3,4,5,6,7,8
FIN SI
FIN POUR
FIN ALGORITHME
pourquoi ca ne marche pas ??
Bonjour tout le monde
Mon sujet est le suivant : soit n un entier supérieur ou égal à 4
Dans un sac on place n jetons : un rouge et tous les autres blancs. On tire successivement au hasard et avec remise deux jetons de l'urne.
On gagne :
? 16euros si on dire deux fois le jetons rouges
? 1euros si on tire deux fois un jetons blanc
? on perd 5 euros dans les autres cas
Soit X la variable aléatoire égale au gain du joueur
Écrire un programme algobox qui simule 1000 parties du jeu précédent avec n = 8 et qui affiche le gain moyen du joueur sur ces 1000 parties.
j'ai fais sa mais sa ne marche pas :
variable : JETON_B EST_DU_TYPE_NOMBRE
JETON_REST_DU_TYPE_NOMBRE
T EST_DU_TYPE_NOMBRE
N EST_DU_TYPE_NOMBRE
DÉBUT ALGORITHME
JETON_R PREND LA VALEUR 1
JETON_B PREND LA VALEUR2
t PREND LA VALEUR JETON B + JETON R
POUR N ALLANT DE 1 à 1000
DEBUT POUR
AFFICHER CALCUL ALGOBOX_ALEA_ENT(1,8)
SI ( JETON R) ALORS
DEBUT SI
AFFICHER JETON R
JETON R PREND LA VALEUR 1
FIN SI
SI JE TON B ALORS
DEBUT SI
AFFICHER JETON B
JETON B PREND LA VALEUR 2,3,4,5,6,7,8
FIN SI
FIN POUR
FIN ALGORITHME
*** message déplacé ***
ça ne marche pas pour de nombreuses raisons,
la plus évidente étant que tu n'as pas construit ton algo sur papier pour définir clairement ce que tu veux obtenir et par quelles étapes logiques tu dois passer.
(ce que l'on a conseillé depuis le début)
les variables : oui, 4 variables
préfère J1 et J2 à JETON_R et JETON_B
que représente T dans ta définition ?
JETON_R PREND LA VALEUR 1
JETON_B PREND LA VALEUR2 ---- non, ce n'est pas à toi d'affecter une valeur à J1 et J2 : c'est la commande ALGOBOX_ALEA_ENT(1,8) qui va le faire
t PREND LA VALEUR JETON B + JETON R --- tu es sûr de ça ? comment on détermine le gain d'une partie ?
POUR N ALLANT DE 1 à 1000 --- oui, bien, ça correspond à la simulation des 1000 parties
SI ( JETON R) ALORS ---- la machine ne comprend pas ça : ici, il doit y avoir un test (comparaison de 2 valeurs : égal, supérieur, inférieur, différent)
AFFICHER JETON B ---- et ça sert à quoi dans ce que l'on veut obtenir ? à rien
JETON B PREND LA VALEUR 2,3,4,5,6,7,8 ---- non, une variable ne peut pas prendre plusieurs valeurs en même temps
---
allez courage, relis attentivement le long message de 17h28.
pose-toi les bonnes questions :
qu'est-ce que je veux obtenir ?
comment j'obtiens les couleurs des jetons ?
comment j'obtiens le gain d'une partie ?
qu'est-ce que je fais de ce gain ?
fais un second essai (pour 19h15, c'est cuit, mais tu vas progresser, et c'est ça le plus important ! )
ces calculs n'ont rien à voir avec le problème (ni avce quoi que ce soit d'auilleurs :
JETON_R PREND LA VALEUR 1
JETON_B PREND LA VALEUR2
t PREND LA VALEUR JETON B + JETON R
on se demande bien à quoi ça va pouvoir servir ce calcul de la valeur constante 3
de plus t n'est pas T
la variable t n'est pas définie.
AFFICHER CALCUL ALGOBOX_ALEA_ENT(1,8)
on affiche un calcul (un nombre entier aléatoire) et on n'en fait rigoureusement rien
c'est à l'utilisateur de lire au vol cette valeur et ... d'en faire quoi ? ce n'est pas à l'utilisateur de faire des calculs, c'est au programme de les faire !!
je m'arrête là parce que tout le reste est du même genre.
poubelle entièrement direct.
pourquoi ? parce que on ne se précipite pas sur les boutons de Algobox au hasard parce que "ça sonne bien par rapport au sujet de faire des ALEA trucmuche et des "ROUGE = 1 sans savoir à quoi ça va servir ni pourquoi. ni de faire des somme de ROUGE et BLANC quei n'ont aucun sens.
mais on construit ce qu'on doit faire pas à pas sur le papier en réfléchissant sur ce que cela fait
ce que l'on détermine en faisant réellement ce que j'ai préconisé
on en est là (lire ma prose précédente)
gain = 0
Répéter 1000 fois
tirer deux jetons au hasard, de couleurs A et B
si A = B = rouge alors le gain de cette partie est 16
si A = B = blanc alors le gain est 1
sinon la perte est 5 (le gain est -5)
cumuler ce gain au gain total.
résultat : l'espérance mathématique = gain / 1000
traduit avec ce qu'on sait des tirages au hasard cela pourrait donner ensuite :
on tire un nombre entier au hasard entre 1 et 8 (de façon générale entre 1 et n)
si ce nombre est 1 alors on est tombé sur le rouge (1 seul parmi les n=8 jetons)
sinon on est tombé sur un jeton blanc
gain = 0
Répéter 1000 fois
A = un entier au hasard entre 1 et 8
B = un entier au hasard entre 1 et 8
si A = B = 1 alors le gain de cette partie est 16 (les deux jetons sont rouges)
si A = B mais ≠ 1 alors le gain de cette partie est 1 (les deux jetons sont blancs)
sinon la perte de cette partie est 5 (le gain est -5)
cumuler ce gain au gain total.
résultat : l'espérance mathématique = gain / 1000
et en traduisant les histoires de cumul de gain
gain <-- 0
Répéter 1000 fois
A <-- un entier au hasard entre 1 et 8
B <-- un entier au hasard entre 1 et 8
si A = B = 1 alors gain <-- gain + 16
si A = B mais ≠ 1 alors gain <-- gain + 1
sinon gain <-- gain - 5
résultat : l'espérance mathématique = gain / 1000
on y est alors presque puisque c'est juste maintenant une question de syntaxe
et pour traduire les "répéter" et les "si " correctement imbriqués
variables : A, B, gain, k, n
initialisation :
n = 8 (nombre de jetons dans l'urne)
gain = 0
traitement :
pour k de 1 à 1000
A = entier au hasard entre 1 et n
B = entier au hasard entre 1 et n
si A = B
si A = 1 alors gain <-- gain + 16
sinon gain <-- gain + 1
sinon gain <-- gain - 5
fin pour
sortie :
afficher gain/1000
je te laisse traduire ça mot à mot en Algobox
j'ai traduit ici les "fin trucmuche" de Algobox par des indentations (décalages des lignes)
et les "prend la valeur" par des = ou des <-- (pour pas choquer les esprits en écrivant gain = gain + quelque chose)
piège classique :
les tests d'égalités dans les "SI" se font avec == pour dire "égal" (double signe =)
et != pour dire "différent"
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :