Correction TD 06 : Simuler l’al´ eatoire
Licence 1 MASS semestre 2, 2007/2008
Exercice 1 : Simulation
a- Algorithme uniformAB(a, b: r´eel) : r´eel d´ebut
retournera+ uniform() (b−a) fin
b- Algorithme random(M : entier) : entier d´ebut
retournermodulo(rand(), M) fin
c- Algorithme pileFace() : bool´een d´ebut
retournerunif orm()<0,5 fin
d- Algorithme de() : entier d´ebut
retourner1 + random(6) fin
Exercice 2 : Simulation de loterie
a- Algorithme init() : tableau d’entiers d´ebut
variable i : entier
variable t : tableau de 49 entiers pouride 0 `a 49faire
t[i]←i+ 1 fin pour retournert fin
Algorithme echange(t : tableau d’entier;i, j : entier) : d´ebut
variable tmp: entier tmp←t[i]
t[i]←t[j]
t[j] ←tmp
1
fin
Algorithme loterie(n: entier) : tableau d’entiers d´ebut
variable i : entier
variable t : tableau denentiers variable boule : tableau de 49 entiers
boule←init()
pouride 0 `a n−1 faire j←modulo(rand(),49−i) t[i]←boule[j]
echange(boule, i, j) fin pour
retournert fin
b- Algorithme numeroPrefere(numero : entier, t : tableau d’entier, n : entier) : bool´een
d´ebut
variable i : entier i←0
tant quei < nett[i]6=numerofaire i←i+ 1
fin tant que retourneri < n fin
Exercice 3 : Tirage sans remise
a- Algorithme sansRemise(p,n: entier) : d´ebut
variable i,x, nbNoires : entier nbNoiresInit←10
nbNoires←nbNoiresInit pouride 0`a p−1faire
x←modulo(rand(),n−i+nbN oiresInit) six < nbNoiresalors
´ecrire(”Boule Noire”) nbNoires←nbNoires - 1 sinon
´ecrire(”Boule Rouge”) fin si
fin pour fin
b- Algorithme sortirNoires(n: entier) : entier d´ebut
variable i,x, nbNoires : entier 2
nbNoiresInit←10 nbNoires←nbNoiresInit i←0
tant quenbNoires>0faire
x←modulo(rand(),n−i+nbN oiresInit) six < nbNoiresalors
nbNoires←nbNoires - 1 fin si
i←i+ 1 fin tant que retourneri fin
Exercice 4 : Test
a- Algorithme afficherPoints(p: entier,a: r´eel) : rien d´ebut
variable i: entier pouride 1`a pfaire
point(uniformAB(-a, a), uniformAB(-a, a)) fin pour
fin
b- Algorithme distanceOrigine(x, y : r´eel) : r´eel d´ebut
retournerp x2+y2 fin
c- Algorithme inCercle(p: entier,r: r´eel) : entier d´ebut
variable x,y : r´eel;i,c: entier c←0
pouride 1`a pfaire x←uniformAB(-a, a) y ←uniformAB(-a, a) sidistance(x,y)≤ralors
c←c+ 1 fin si fin pour retournerc fin
d- Si la r´epartition des points est effectivement uniforme dans le carr´e de cˆot´e 2a, le nombre de points appartenant au cercle doit ˆetre proportionnel `a la surface du cercle. On devrait donc avoir (2πra2)2ppoints dans le cercle.
3
Exercice 5 : March´ e
a- Algorithme suiteAddStoch(a, b, ǫ: r´eel,n: entier) : tableau d’entier d´ebut
variable t: tableau denentiers variable i: entier
t[0]←b+unif orm(−ǫ, ǫ) pouride 1`a nfaire
t[i]←a∗t[i−1] +b+unif orm(−ǫ, ǫ) fin pour
retournert fin
b- Algorithme suiteMultStoch(a, b, ǫ: r´eel,n: entier) : tableau d’entier d´ebut
variable t: tableau denentiers variable i: entier
t[0]←b
pouride 1`a nfaire
t[i]←(a+unif orm(−ǫ, ǫ))∗t[i−1] +b fin pour
retournert fin
4