• Aucun résultat trouvé

29févie2008 É ieS Bi Uiveiédei eShia Ai

N/A
N/A
Protected

Academic year: 2022

Partager "29févie2008 É ieS Bi Uiveiédei eShia Ai"

Copied!
24
0
0

Texte intégral

(1)

Sébastien Verel

vereli3s.unie.fr

www.i3s.unie.fr/

verel

ÉquipeSoBi-UniversitédeNieSophia-Antipolis

29 février2008

(2)

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

+

b

Question prinipaledujour :

Comment générerune sériede nombres quiont l'aird'être

aléatoires?

(3)

Plan

1

Introdution

2

Générateurs pseudo-aléatoire

3

Algorithmesstohatiques

(4)

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

=

2l

a

π

à partird'événements aléatoires,ilest possibled'approximer une valeur

(5)

Besoin 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

(6)

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 maislente

Al'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

(7)

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éatoire

Mais :

Taillede mémoirelimitée

Nombre de registresde alul d'un proesseurlimité

inévitable périodiitédes nombresgénérés pseudo-aléatoirement parordinateur

(8)

Petit 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

(9)

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:23432

2. 3432

2

=

11778624, deuxième nombre:177862

3. ...

Périodiitéfaible

Dépendbeauoup de lagraine

àfontionnner sur l'ENIAC,mais trèsvite limité.

(10)

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) /10

retournersuiv

n

(11)

Méthode de Fibonai

Basé surlasuitede Fibonai et l'arithmétiquemodulaire.

x

n

=

xn

1

+

xn

2

modM

ave x

0 etx

1

omme graines

Ou une varianteave k unentier.

x

n

=

xn

1

+

xn

k

mod M

ave x

0 ...x

k

1

omme graines

Qualité :dépendde k et desnombresutiliséspour graines

Peu de onsommationde ressoures

Simple àimplémenter....

(12)

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 n

1

suiv

retournersuiv

n

(13)

Générateurs ongruentiels linéaires

Basé surles suitesarithmétiquo-géométriques etl'arithmétique

modulaire.

x

n

=

axn

1

+

mod m

ave x

0

unegraine.

Périodeau maximumm.

m hoisitde latailledesnombres enmahine 2 32

.

Simple àimplémenter....

(14)

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

(15)

Mersenne-twister (1997)

Basé surles nombres de Mersenne2 p

1

Période2 19937

1

distributionuniformesur 623 dimensions

N'est pas ungénérateuradapté à laryptographie,mais très

utile en simulationet optimisation.

(16)

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

(17)

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

-

(18)

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éel

début

retourner

(

b

a

).

uniform

() +

a

n

-

générateur pseudo-aléatoire uniformequiretourne unnombre

entier de

[

0

,

M

[

-

Algorithme random(M :entier) :entier

début

retourner modulo

(

rand

(),

max

)

(19)

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) :entier

début

retourner A

+

random

(

B

A

)

n

-

(20)

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

0

tant quea

6=

n faire

lire(a )

si a

<

n alors

érire(troppetit)

sinon

érire(tropgrand)

nsi

ntant que

érire("gagné")

(21)

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éel

pts

0

pour ide 0 àn

1 faire

ρ ←

10

rand

()/(

maxValue

1

) θ ← π ∗

rand

()/(

maxValue

1

)

aher(

ρ

,

θ

)

pts

pts+points(

ρ

)

npour

retournerpts

n

(22)

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

(23)

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

] ←

0

pour ide 1àn

1faire

si rand()

maxValue

/

2alors

t

[

i

] ←

t

[

i

1

] +

1

sinon

t

[

i

] ←

t

[

i

1

] −

1

n si

n pour

retourner t

n

(24)

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

+

b

Question prinipaledujour :

Comment générerune sériede nombres quiont l'aird'être

aléatoires?

Références

Documents relatifs

Savoir modier un style d'un élément du DOM.. Savoir élaborer un menu

Attention toutefois quelques trus datent3. Et bien sur, les reommandations

Connaître les mots lefs d'un langage impératif simple.. Connaître les opérations de bases

booléen est une expression dont la valeur est soit Vrai soit Faux. Cette expression peut

−→ utiliser un shéma itératif à nombre d'itérations déterminé. −→ appeler aussi souvent

ne retourner auune valeur : on notera le type de retour rien. Algorithme deviner(n : entier)

Utilisation d'un aumulateur pour réaliser un alul dans

les nombres plus petit que le nombre pivot sont à gauhe de