Épreuve pratique 2009, sujet 118

mardi 10 novembre 2009
par  Alain BUSSER


Simulation CaRMetal

Bien que ce ne soit pas du tout prévu par l’énoncé du TP, voici une simulation du jeu en ligne. Pour démarrer une partie (on peut vérifier plusieurs fois), cliquer deux fois sur le bouton « recommencer » en bas à gauche (pour qu’il soit à nouveau enfoncé). Ensuite on fait pareil avec le bouton « Lancer le dé » en haut à gauche (décocher puis cocher) chaque fois qu’on veut lancer le dé. Le pion avance alors en suivant la règle du jeu. Ceci dit un mouvement (zoom par exemple) peut relancer le dé ce qui oblige alors à recommencer la partie.

la simulation au format CaRMetal

Simulation de 100 parties

En JavaScript, le dé s’obtient classiquement par

de=Math.floor(Math.random()*6+1)

(de, pour « dé », est une variable entière allant de 1 à 6).

Pour savoir si de est divisible par 3, on calcule de modulo 3 et on regarde s’il est nul :

de%3==0

Avec une variable de type chaîne de caractères appelée aff (comme « affichage »), un test sur la position du pion à la fin de la partie détermine si aff est égal à « gagné » ou à « perdu » :

/*Programme tp 118a
*/
var x,y;
var de;//entier entre 1 et 6
var aff;//texte sortie
for(partie=0;partie<100;partie=partie+1){
	x=0;
	y=0;
	for(n=1;n<=6;n=n+1){
		de=Math.floor(Math.random()*6+1);
		if(de%3==0){
			x++;
		} else {
			y++;
		}
	}
	if((x<4)&&(y<5)){
		aff="gagné";
	} else {
		aff="perdu";
	}
	Println(x+","+y+","+aff);
}

Plutôt que d’afficher les 6 résultats de lancers de dé et les 6 valeurs successives de x et y, on a seulement affiché les valeurs finales de x et y et le texte aff.

Pour incrémenter x, au lieu d’écrire x=x+1 on a choisi l’abréviation x++. Idem pour y.


Simulation de 1000 parties

Pour le A.2 on va remplacer la variable aff qui disait si la partie est gagnée ou perdue, par une variable numérique entière gain qui est égale au nombre de parties gagnées sur N parties (initialement N=1000). Alors chaque fois que la partie est gagnée, gain est incrémentée (avec gain++) :

/*Programme tp 118b
*/
var x,y;
var de;//entier entre 1 et 6
var gain=0;
var N=1000//nombre parties
for(partie=0;partie<N;partie=partie+1){
	x=0;
	y=0;
	for(n=1;n<=6;n=n+1){
		de=Math.floor(Math.random()*6+1);
		if(de%3==0){
			x++;
		} else {
			y++;
		}
	}
	if((x<4)&&(y<5)){
		gain++;
	}
}
var freq=gain/N;
Alert(freq);

Dans l’espace

La question B.2 a été mise là uniquement pour occuper l’hypothétique candidat qui aurait réussi à faire tout ce qui précède. D’ailleurs elle est très vague : Comment peut-on généraliser dans l’espace ?

On va alors imaginer les régles suivantes :

  • On incrémente x, y ou z selon la valeur du dé modulo 3.
  • Les valeurs de x, y et z à ne pas dépasser seront 3, 4 et 5.

Le fichier JavaScript précédent se modifie alors en celui-là :

/*Programme tp 118c
*/
var x,y,z;
var de;//entier entre 1 et 6
var gain=0;
var N=1000//nombre parties
for(partie=0;partie<N;partie=partie+1){
	x=0;
	y=0;
	z=0;
	for(n=1;n<=6;n=n+1){
		de=Math.floor(Math.random()*6+1);
		if(de%3==0){
			x++;
		} else if(de%3==1) {
			y++;
		} else {
			z++;
		}
	}
	if((x<3)&&(y<4)&&(z<5)){
		gain++;
	}
}
var freq=gain/N;
Alert(freq);

Conclusion

L’activité proposée par Monique Gironce vaut le détour, ne serait-ce que pour le lien vers la vidéo.


Commentaires