Sébastien Verel
vereli3s.unie.fr
www.i3s.unie.fr/
∼
verelÉquipeSoBi-UniversitédeNieSophia-Antipolis
29 février2008
Objetifs de la séane 6
Connaîtreles propriétés d'un générateurpseudo-aléatoire
Simulerun nombrealéatoire entierou ottantentre 2bornes
données
Erire unalgorithmeutilisant ungénérateur pseudo-aléatoire
Erire unalgorithmequigénère dessériestemporellesdutype
u
t
+
1=
aut+
b+ ǫ
et ut+
1= (
a+ ǫ)
ut+
bQuestion prinipaledujour :
Comment générerune sériede nombres quiont l'aird'être
aléatoires?
Plan
1
Introdution
2
Générateurs pseudo-aléatoire
3
Algorithmesstohatiques
Aiguille de Buon
Expériene
Laner n fois uneaiguillede longueur2l surparquet dontles lames
sontde largeur2a .
Soit p
n
lenombrede fois quel'aiguilleinterepteunelamede
parquet.
La fréquene p
n
n
permetd'approximer lenombre
π
.lim
n
→∞
p
n
n
=
2la
π
→
à partird'événements aléatoires,ilest possibled'approximer une valeurBesoin de nombres aléatoires
Simulation :
Modèleéonomique, soiologique,physique, médiale,...
Cryptographie :
Génération sûre de lésdehirement
Optimisation stohatique :
méthodesde MonteCarlo,reuit simulé,algorithmes
génétiques, Paritules Swarm Optimisation...
Jeux de hasard:
Loto, suduko,...
Besoin roissantde nombres aléatoiresen partiulieren simulation
et en ryptographie
Problème de génération
Méthodesprinipales degénérateurs de nombresaléatoires:
Al'aided'un système physique dontl'étatest aléatoire :
Valeurpréise d'une résistane,appartition destahessolaires,
vibrationde matière...
→
bonneméthode maislenteAl'aided'un ordinateur:
Mais unordinateur estune mahinedéterministe:
tout étatprohain est unefontiondes étatspréèdents de la
mahine.
→
rapide,faileà utiliserdansunordinateur→
maisPASaléatoire dutout...Depuistrès peu :ombinaison desdeux
Limite des mahines : le pseudo-aléatoire
Tehnique :
Initialisationd'un premier nombre appelégraine,
génération d'unesuitede nombres dénisparréurrene :
u
n
+
1=
f(
un)
(
3402093,
56,
125672,
10048,
67808 9, ...)
La suitedoitavoirertaines propriétés de l'aléatoire.
→
générateur pseudo-aléatoireMais :
Taillede mémoirelimitée
Nombre de registresde alul d'un proesseurlimité
→
inévitable périodiitédes nombresgénérés pseudo-aléatoirement parordinateurPetit historique
Développementessentiellementdûau besoinen simulationet
ryptographie.
1946 :John Von Neumann, générateurMiddlesquare
1948 :D. H.Lehmer,générateur ongrueniel
1958 :G.T.Mithell, etD.P.Moore,améalioration
1997 :Makoto MatsumotoetTakuji Nishimura:
Mersenne-Twister
Algorithme de Von Neumann
MiddleSquare
Prinipe:pouraluler lenombre suivant, onélève auarré le
nombrepréèdentpuis ononserve les hiresdumilieu.
Exemple :
Graine:1111
1. 1111
2
=
1234321, premier nombre:234322. 3432
2
=
11778624, deuxième nombre:1778623. ...
Périodiitéfaible
Dépendbeauoup de lagraine
àfontionnner sur l'ENIAC,mais trèsvite limité.
Algorithme de Von Neumann
Algorithme rand(n :entier) :entier
début
variable suiv :entier
variable nbChires :entier
nbChires
←
E(log10(
n2)
)suiv
←
modulo(n2,10nbChrires) /10retournersuiv
n
Méthode de Fibonai
Basé surlasuitede Fibonai et l'arithmétiquemodulaire.
x
n
=
xn−
1+
xn−
2modM
ave x
0 etx
1
omme graines
Ou une varianteave k unentier.
x
n
=
xn−
1+
xn−
kmod M
ave x
0 ...x
k
−
1omme graines
Qualité :dépendde k et desnombresutiliséspour graines
Peu de onsommationde ressoures
Simple àimplémenter....
Méthode de Fibonai
Algorithme
On supposen
0 ,n
1
et M sontdesnombres entiersdénisde
manière globale.
Algorithme rand() :entier
début
variable suiv:entier
suiv
←
modulo(n0+
n1 ,M)n
0
←
n1 n1
←
suivretournersuiv
n
Générateurs ongruentiels linéaires
Basé surles suitesarithmétiquo-géométriques etl'arithmétique
modulaire.
x
n
=
axn−
1+
mod mave x
0
unegraine.
Périodeau maximumm.
m hoisitde latailledesnombres enmahine 2 32
.
Simple àimplémenter....
Algorithme
On supposeraque x
0
,a, etmsontdéterminés globalement,ainsi
que lenombre ourant x.
Algorithme rand() :entier
début
x
←
modulo(ax+
,m)retournerx
n
Mersenne-twister (1997)
Basé surles nombres de Mersenne2 p
−
1Période2 19937
−
1distributionuniformesur 623 dimensions
N'est pas ungénérateuradapté à laryptographie,mais très
utile en simulationet optimisation.
Propriétés statistiques
Les générateurs pseudo-aléatoiresgénèrentdes loisuniformes
U
(
0,
maxValue−
1)
.Certainespropriétésstatistiquesd'un générateur pseudo-aléatoire
sont attendues:
Propriétéde ladistributiondes nombres:moments, fréquene
d'apparitiondesnombres,omparaison àlaloiuniforme
Entropie maximale
Indépendane statistiquedes nombresde lasérie :
autoorrélation,testspetral
Générateur pseudo-aléatoires primitifs
générateur pseudo-aléatoire primitif uniformequiretourne un
nombre entierentre 0et maxValue
−
1-
Algorithme rand() :entier
-
générateur pseudo-aléatoire primitif uniformequiretourne un
nombre réeldans
[
0,
1[
-
Algorithme uniforme() :réel
début
retourner
rand
()
maxValue
n
-
Générateurs pseudo-aléatoires non primitifs
générateur pseudo-aléatoire uniformequiretourne unnombre
réel dans
[
a,
b[
-
Algorithme uniformeAB(a
,
b :réel) :réeldébut
retourner
(
b−
a).
uniform() +
an
-
générateur pseudo-aléatoire uniformequiretourne unnombre
entier de
[
0,
M[
-
Algorithme random(M :entier) :entier
début
retourner modulo
(
rand(),
max)
Générateurs pseudo-aléatoires non primitifs
Ces générateurs ne sontpasprimitifsetsontà redénir.
générateur pseudo-aléatoire uniformequiretourne unnombre
entier de
[
A,
B[
-
Algorithme randomAB(A
,
B :entier) :entierdébut
retourner A
+
random(
B−
A)
n
-
Jeu où l'on doit deviner un nombre entre 0 et 100
Algorithme deviner() :rien
début
variable a , n :entier
n
←
modulo(
rand(),
101)
a
←
0tant quea
6=
n fairelire(a )
si a
<
n alorsérire(troppetit)
sinon
érire(tropgrand)
nsi
ntant que
érire("gagné")
Simulation de laner de éhettes
Simulation d'un lané de n éhettessur uneible
Algorithme laner(n:entier) :entier
début
variable i,pts:entier
variable
ρ
,θ
:réelpts
←
0pour ide 0 àn
−
1 faireρ ←
10∗
rand()/(
maxValue−
1) θ ← π ∗
rand()/(
maxValue−
1)
aher(
ρ
,θ
)pts
←
pts+points(ρ
)npour
retournerpts
n
Simulation de laner de éhettes
Simulation d'un lané de n éhettessur uneible
Algorithme points(d:réel):entier
début
sid>10alors
retourner0
sinon
sid>5alors
retourner3
sinon
sid>2alors
retourner5
sinon
sid>1alors
retourner10
sinon
retourner20
nsi
nsi
nsi
nsi
n
Simulation de marhe aléatoire
Simulation unemarhe aléatoire de n pas surl'ensembledes entiers
(positifsou négatif) en partant de l'absisse0.
Algorithme marheZ(n:entier):tableaud'entiers
début
variable i:entier
variable t :tableaude nentiers
t
[
0] ←
0pour ide 1àn
−
1fairesi rand()
≤
maxValue/
2alorst
[
i] ←
t[
i−
1] +
1sinon
t
[
i] ←
t[
i−
1] −
1n si
n pour
retourner t
n
Objetifs de la séane 6
Connaîtreles propriétés d'un générateurpseudo-aléatoire
Simulerun nombrealéatoire entierou ottantentre 2bornes
données
Erire unalgorithmeutilisant ungénérateur pseudo-aléatoire
Erire unalgorithmequigénère dessériestemporellesdutype
u
t
+
1=
aut+
b+ ǫ
et ut+
1= (
a+ ǫ)
ut+
bQuestion prinipaledujour :
Comment générerune sériede nombres quiont l'aird'être
aléatoires?