Travaux Pratique 6 : Simulation d expériences aléatoires Exercice 1: Lancer de dé a) Ecrire un programme qui renvoie le résultat d un lancer de dé à 6 faces équilibrées; autrement dit écrire un programme qui simule un lancer de dé. b) Compléter le programme précédent pour qu il simule une série de 10 lancers de dés. c) Le compléter encore pour qu il affiche la somme des résultats de ces 10 lancers. Exercice 2: Lancer de pièce a) Ecrire un programme qui simule un lancer de pièce équilibrée. On pourra représenter pile par 1 et face par 0. b) Transformer le programme pour qu il simule un lancer de pièce où la probabilité d obtenir pile est 1/3. c) Ecrire le programme complet, qui demande p à l utilisateur, et qui simule un lancer de pièce truquée où la probabilité d obtenir pile est p. Exercice 3: Temps d attente du premier 5 a) Ecrire un programme qui simule et affiche des lancers de dé (à 6 faces) jusqu à l obtention du premier 5. b) Compléter le programme précédent pour qu il renvoie le rang du premier lancer où l on obtient 5. Exercice 4: Nombre de faces a) Rappeler l instruction en Pascal qui simule un lancer de pièce où la probabilité d obtenir face est 0,4. b) L intégrer dans un programme qui demande à l utilisateur un entier n et qui renvoie le nombre de face obtenus en n lancers. Exercice 5: Edhec 2007 On lance une pièce équilibrée et on note Z la variable aléatoire égale au rang du lancer où l on obtient le premier pile. Après cette série de lancers, si Z a pris la valeur k (k N ), on remplit une urne de k boules numérotées 1, 2,, k, puis on extrait au hasard une boule de cette urne. On note X la variable aléatoire égale au numéro de la boule tirée après la procédure décrite ci-dessus. 1. On décide de coder l événement obtenir un pile par 1 et l événement obtenir un face par 0. Compléter le programme suivant pour qu il affiche la valeur prise par Z lors de la première partie de l expérience décrite ci-dessus. Program edhec 2007; Var z,hasard:integer; z:=0; repeat z:=...; hasard:=...; until (hasard=1); writeln(z); 2. Quelle instruction faut-il rajouter avant la dernière ligne de ce programme pour qu il simule l expérience aléatoire décrite dans ce problème et affiche la valeur prise par la variable aléatoire X? Exercice 6: Simulation du temps d attente jusqu au n ie succès On effectue des lancers successifs d un dé honnête. On note X 1, resp. X 2, resp. X n, la variable aléatoire égale au nombre de lancers effectués jusqu à l obtention du premier, resp. second, resp. n ie 6. 1. Ecrire un programme Turbo-Pascal qui simule cette expérience, et qui affiche les résultats successifs ainsi que la valeur de X 1. On pourra présenter les résultats sous la forme : 2 5 4 1 1 3 6; X=7. 2. Modifier le programme précédent afin qu il affiche la valeur de X 2. 3. Ecrire alors un programme Turbo-Pascal qui demande n N à l utilisateur, puis qui simule cette expérience en affichant la valeur de X n. Exercice 7: expérience Edhec 2000 Soit n 2. On lance n fois une pièce truquée donnant Pile avec la probabilité p ]0,1[ et Face sinon. Pour tout entier naturel k 2, on dit que le k ième lancer est un changement s il amène un résultat différent de celui du (k 1) ième lancer. On note X n la variable aléatoire égale au nombre de changements survenus. 1. On décide de coder Pile par 0 et Face par 1. Ecrire une fonction Turbo-Pascal lancer, qui simule un lancer de pièce.
2. L intégrer dans un programme Turbo-Pascal qui demande n et p à l utilisateur et qui affiche la valeur prise par la variable X n. Exercice 8: Edhec 2005 Un mobile se déplace sur les points à coordonnées entières d un axe d origine 0. Au départ, le mobile est à l origine. Le mobile se déplace selon la règle suivante : s il est sur le point d abscisse k à l instant n, alors, à l instant (n+1) il sera sur le point d abscisse (k +1) avec la probabilité 1 3 ou sur le point d abscisse 0 avec la probabilité 2 3. Pour tout n de N, on note X n l abscisse de ce point à l instant n et l on a donc X 0 = 0. Par ailleurs, on note T l instant auquel le mobile se trouve pour la première fois à l origine (sans compter son positionnement au départ). 1. Compléter le programme suivant pour qu il simule l expérience aléatoire étudiée et affiche la valeur prise par X n pour une valeur de n entrée par l utilisateur. Program edhec2005; Var k, n, u, X : integer; Readln(n); Randomize; X:=O; For k:=1 to n do u :=random(3); if (u=2) then X :=...; else X :=...; Writeln (X); 2. Modifier le programme précédent afin qu il simule l expérience étudiée mais qu il affiche la valeur prise par la variable T. Exercice 9: Deux personnes P 1 et P 2 ont rendez-vous dans un complexe formé de 5 sites S 1, S 2,..., S 5, disposés en pentagone et reliés par des routes, comme l illustre le schéma ci-contre. Ils arrivent au rendez-vous à l heure prévue, mais suite à un malentendu, P 1 se présente au site S 1 et P 2 au site S 2. Ils décident alors de partir à la recherche l un de l autre. Ils empruntent les différentes routes du site avec les règles suivantes : à partir d un site, chacun choisit de se rendre sur l un des deux sites voisins, les deux possibilités étant équiprobables; les déplacements des deux personnes se font simultanément, et indépendamment. Ils continuent à se déplacer ainsi jusqu à se retrouver éventuellement sur un même site (ils ne se rencontrent pas le long des routes). Une fois retrouvés, ils ne se déplacent plus. 1. Compléter le programme suivant, afin de simuler l expérience décrite ci-dessus. Var i,j,k : integer; Begin Randomize; i:=1;j:=2; k:=...; While... Do Begin... writeln( après,k, déplacements P1 est en S,i, et P2 en S,j); writeln( les deux personnes se retrouvent après,k, déplacements); End. 2. En moyenne, combien faut-il de déplacements pour qu ils se rencontrent? (On complètera le programme précédent, afin d obtenir informatiquement une valeur approchée de cette moyenne). 3. Comment évolue cette moyenne en fonction des points de départ de ces deux personnes? 4. Que se passerait-il si le complexe était en forme d hexagone ou de carré? 5. **Comment évolue la moyenne si on suppose qu à chaque déplacement (excepté le premier) le choix de la direction n est plus équiprobable, mais qu il y a une chance sur trois de revenir sur ses pas, et deux chances sur trois d aller dans la nouvelle direction?
CORRECTION TP 6 Exercice 1 : PROGRAM de; VAR i,somme,lancer : INTEGER; somme:=0; FOR i:=1 TO 10 DO lancer:=random(6)+1; variante : die:=random(6); writeln(lancer); if die =0 then die :=6; somme:=somme+lancer; writeln( La somme des lancers est S=,somme,. ); Exercice 2 : a) Dans le cas d une pièce équilibrée : piece := random(2); c) Dans le cas d une pièce truquée : PROGRAM piece; VAR lancer : INTEGER; p : REAL; writeln( Entrer p ); readln(p); IF random<p THEN lancer:=1 else lancer:=0; writeln(lancer); Exercice 3 : PROGRAM attente; VAR i,lancr,rang : INTEGER; p : REAL; rang:=0; REPEAT rang:=rang+1; lancer:=random(6)+1; write(lancer); UNTIL lancer=5; writeln( Le premier rang d apparition du 5 est,rang); Exercice 4 : on peut décider de représenter face par 1 et pile par 0. Alors PROGRAM nbre faces; VAR i,n,nbface : INTEGER; FUNCTION piece:integer; if random<0.4 then piece:=1 else piece:=0; writeln( Entrer le nombre de lancers n= ); readln(n); nbface:=0; FOR i:=1 TO n DO IF piece=1 THEN nbface:=nbface+1; writeln( En,n, lancers, il y a eu,nbface, faces ); OU nbface:=0; FOR i:=1 TO n DO nbface:=nbface+piece; writeln( En,n, lancers, il y a eu,nbface, faces );
Exercice 5 : REPEAT z:=z+1; hasard:=random(2); UNTIL (hasard=1); WRITELN(z); X:=1+random(z-1); WRITELN(X); Exercice 6 : x:=0; nbre6:=0; REPEAT d:=random(6)+1; write(d,,); x:=x+1; if d=6 then nbre6:=nbre6+1; UNTIL nbre6=2; write( ; X=,x); Exercice 7 : PROGRAM edhec2000; VAR k,n,nbre :INTEGER; p,x,y:real; FUNCTION lancer(p:real):integer; If random<p then lancer:=0 else lancer:=1; write( donner n et p ); readln(n,p); x:=lancer; nbre:=0; FOR k:=2 TO n DO y:=lancer; If x<>y then nbre :=nbre+1; x:=y; write(nbre); Exercice 8 : 1. if (u=2) then X:=X+1 else X:=0; 2. Version longue : X:=0; T:=0; REPEAT T:=T+1; u:=random(3); if (u=2) then X:=X+1 else X:=0; UNTIL X=0; Version courte (sans simuler X) : T:=0; Repeat T:=T+1; u:=random(3); UNTIL (u<= 1); Exercice 9 : 1. i:=1;j:=2;k:=0; WHILE i<>j DO r:=random(2); if r=0 then r:=-1; Variante : r:=-1+2*random(2); i:=i+r; if i=0 then i:=5 else if i=6 then i:=1; s:=random(2); if s=0 then s:=-1; j:=j+s; if j=0 then j:=5 else if j=6 then j:=1; 2. Rajouter une boucle FOR qui fait 100 fois de suite cette expérience, puis prendre la moyenne des nombres de déplacements obtenus : moy:=0; FOR l:=1 TO 100 DO i:=1;j:=2;k:=0; WHILE i<> j DO... moy:=moy+k; write(moy/100); 3. On trouve une moyenne d environ 12 déplacements en partant de (1,2) et de 8 déplacements en partant de (1,3). Ensuite par symétrie, on se ramène à l un ou l autre cas!
4. Si le complexe est en forme d hexagone ou de carré (ou plus généralement, si il y a un nombre pair de routes), il est impossible que les personnes se rencontrent... 5. Il faut stocker la nature des déplacements, donc il faut deux variables de plus : notons les Di et Dj. Par ailleurs, on suppose que pour leur premier déplacement, il y a équiprobabilité dans le choix de la direction : il faut donc faire ce premier déplacement, avant de rentrer dans la boucle while. Par souci de clarté, j ai modifié le programme de la première question (et non celui de la deuxième question) : program simulationbis; uses wincrt; var i,j,k,di,dj:integer; i:=1;j:=2;k:=0; if random(2)=0 then Di:=1 else Di:=-1; if random(2)=0 then Dj:=1 else Dj:=-1; i:=i+di; j:=j+dj; if i=6 then i:=1; if i=0 then i:=5; if j=6 then j:=1; if j=0 then j:=5; while i<>j do k:=k+1; if random<1/3 then Di:=-Di; { on revient en arrière ssi Di est modifié } if random<1/3 then Dj:=-Dj; i:=i+di; j:=j+dj; if i=6 then i:=1; if i=0 then i:=5; if j=6 then j:=1; if j=0 then j:=5; writeln( après,k, déplacements P1 est en S,i, et P2 en S,j); writeln( rencontre au bout de,k, déplacements ); Le temps moyen avant rencontre est plus court : moins de 8.5 déplacements en moyenne (contre 12)... comme quoi ca sert parfois de réfléchir...