simulare

21
I. Repartifii discrete in modelarea unorprobleme practice intervin frecvent variabile aleatoare cu repartilii care suntdeduse fie pe cale logic6, fie ca urmare a verificirii uneiipoteze privind concordanfa dintre repartiqia empiricl gi cea teoretici. in continuare vom prezenta c6tevadin cele mai frecvent intdlnite repartifii ?n aplicaliile economice, industriale, frzice qi studiulfenomenelor naturii. 1.1. Generareo numerelor uleatoore dapd o reparti(ie binomiald Definilia 1.' Spunem-'cA'b variabild ateatoare X are o distribufie Lrincmiala cu parametrii n qi p dacd pentru orice fr: 0,1,2,... , n, avem: r(x = t)= cl - po -qo-r , in care, r este un intregpozitiv,0 < p < 1 $i q : | - p. Seconstatl c[ variabila aleatoareXse poate scrie subforma: -a X =LXo, t=l unde, (t o \ Xr=l l, X* rcprezentdnd variabila aleatoare care ia valoareaI cdnd s-a \p t- P) realizat evenimentul I gi 0 in cazcontrar. Dacd, 41,42, ... ,lo sunt evenimente independente qi P(AD - p, k: 0,1 , 2, ... , n iarX reprezinti numirul evenimentelor carese realizeazl" atunci X are distrbu{ie binomialdcu parametri n $i p. in particular, dacl I esteun eveniment legat de o anumitdexperientl aleatoare gi probabilitatea ca A si se producicdnd efectuim o singurl dati experienfa este P(A) : p, atunci numlrul X al realiz6rilorlui A chndefectudm de r ori experienla are distribu{ie binomiald cu parametrii n Si p. DacI o variabilf, aleatoare X aredistribufie binomiald cu parametrii n qi p atunci valoarea medie gi dispersia lui Xsunt: M(E: np, d(n : npq. Definilia2.'Spunem cdo variabilialeatoare Xare o distribu{ie binorniald cu exponent negativ cu parametrii m gi p dacd poate lua valorile m, m + l, ... $i probabilitatea ca sd se producievenirnentul {X= *} este dati derelafia: f(X = k) = Ci-r'' p'' qo-^, k )- m, incare: nresteunintregpozitiv,0<p< I $iq: l- p. O experien{i se'efectueazd pdn6 la ceade a m-a realizare a unui eveniment I legatde ea.Dacd probabilitatea acestui eveniment cdnd seface o singuridat[ experienta este p, atunci numdrulX de efectulri ale experien{ei este o variabili aleatoare care are o distributie binomiali cu exponent negativ cu parametrii m Si p.

description

AZz

Transcript of simulare

  • I. Repartifii discrete

    in modelarea unor probleme practice intervin frecvent variabile aleatoare cu repartiliicare sunt deduse fie pe cale logic6, fie ca urmare a verificirii unei ipoteze privind concordanfadintre repartiqia empiricl gi cea teoretici. in continuare vom prezenta c6teva din cele maifrecvent intdlnite repartifii ?n aplicaliile economice, industriale, frzice qi studiul fenomenelornaturii.

    1.1. Generareo numerelor uleatoore dapd o reparti(ie binomiald

    Definilia 1.' Spunem-'cA'b variabild ateatoare X are o distribufie Lrincmiala cuparametrii n qi p dacd pentru orice fr: 0,1,2, ... , n, avem:

    r(x = t)= cl - po -qo-r ,

    in care, r este un intreg pozitiv, 0 < p < 1 $i q : | - p.Se constatl c[ variabila aleatoareXse poate scrie sub forma:

    -aX =LXo,t= l

    unde, ( t o \Xr=l l, X* rcprezentdnd variabila aleatoare care ia valoarea I cdnd s-a

    \p t - P)realizat evenimentul I gi 0 in caz contrar.

    Dacd, 41, 42, ... ,lo sunt evenimente independente qi P(AD -

    p, k: 0,1 , 2, ... , n iar Xreprezinti numirul evenimentelor care se realizeazl" atunci X are distrbu{ie binomiald cuparametri n $i p. in particular, dacl I este un eveniment legat de o anumitd experientlaleatoare gi probabilitatea ca A si se produci cdnd efectuim o singurl dati experienfa esteP(A) : p, atunci numlrul X al realiz6rilor lui A chnd efectudm de r ori experienla aredistribu{ie binomiald cu parametrii n Si p.

    DacI o variabilf, aleatoare X are distribufie binomiald cu parametrii n qi p atuncivaloarea medie gi dispersia lui Xsunt:

    M(E: np, d(n : npq.Definilia 2.' Spunem cd o variabili aleatoare Xare o distribu{ie binorniald cu exponent

    negativ cu parametrii m gi p dacd poate lua valorile m, m + l, ... $i probabilitatea ca sd seproduci evenirnentul {X= *} este dati de relafia:

    f(X = k) = Ci-r ' ' p' ' qo-^, k )- m,

    incare: nresteunintregpozi t iv ,0

  • Intr-adevi" evenimentul {X: *} se scrie ca intersecfia a doui evenimente: ,, in primelefr- I efectulri ale experien{ei evenimentull se produce de m - I ori" gi ,, ?n a fr-a efectuare aexperienfei se produce 1". Probabilitatea primului din aceste doud evenimente este (conformschemei lui Bernoulli):

    cir' ' P'-' 'q'-' ,

    iar probabititatea celui de al doilea estep. Deci:

    f(X = k)= p.Cirt - pn-t -qr-' = Ci-rt . p^ .qr ^

    Daci o variabili aleatoare X are distribufie binomiali cu e.\pcltsnt negotiv cuparametrii m $i p atunci valoarea medie gi dispersia luiXsunt:

    u(x)=Legea de reparti{ie BINOMLALA reprezintl schema bilei revenite a cdrei func{ie de

    reparti{ie are forma:

    Ar): cifq" ,unde: z: reprezinti numlrul total de bile;

    ;r = reprezintii numdrul de bile albe;q : reprezintl probabilitatea de a extrage o bil6 albd;p: binomiala reprezinti probabilitatea de a extrage o bil5 neagri.Dac[ se genercazl un numir I e [0,1] uniform repartizat atunci vom avea:P{risP): P: xln-

    Aceastii relafie ne permite si stabilim o analogie in procesul de generare a numereloraleatoare cu reparti{ie binomiald.

    Algoritmul \Pasul l-' Se introduc parametrii necesari simulf-rii gi anume:- N- numdrul de generiri (lungimea girului generat);-

    parametrul ru (numdrul total de bile din urni);- parametrulp (probabilitatea de a extrage o bil6 alb[).Pasul 2.. Se genereazi rn numere aleatoare 4 e [0,1], ,' : l, 2,

    -.. , m, uniformrepartizate in [0, l];

    Pasul -3.' Se compari fiecare numir generat ri cu probabilitatea evenimentului

    favorabil p,iar rczultatul comparirii se adun[ la variabila r, care reprezintl numdrul generat,astfel:

    - dacl rispatuncid:l;- dacd4>patunci d:0;- se face suma.r : x * d.Pasul 4-' Variabila generatl x1 : x;

    f' n'(x)=#

  • \Posul 5.' Se testeaz5 daci procesul de generare s-a terminat: daci k < ,M se reiaalgoritmul de la pasul 2,\n caz contrar proc-sul de generare s-a terminat. Cu alte cuvinte, serepettr paqii 2, 3 gi 4 pdn[ cind se atinge lungimea doriti a qirului generat (ltr). Evident ci infiecare iterafie k: l, 2,..., N, variabila generatixl = x.

    Funcfia care realizeazi generarea de numere aleatoare cu repartifie BINOMIALA areurmitoarea form[ (func1ia este rezolvattr ?n limbajul C++):

    void0,{int k,n,i,d,m,x;float r,p;print("\nGENERAREA NUM ERELOR ALEATOARE CU REPARTJTIE B INOM IA LA ") ;print("\n");print('\nDati numarul total de bile din urna :");scanf("Yod",&m);print('\nDati probabilitatea de a extrage o bila alba :"); /scanf("o/of',&p);printf("\nDati numarul de simulari :");scan("oZd",&n);print(l'\r X generat Binomiala");print('\n");for(k:l;k

  • 1.2. Generarea numerelor aleotoare dupd o repartiyie Poisson

    variabila ateatoare discretd x,(0 1 2 k "'\\Po Pr Pz P* "')

    u'" o reparti{ie Poissonde parametrulu dac\funcyia sa defrecvenld arc forma urmdtoare:

    pt = p(x - *)= i. "-^,t = o, l , 2,3,...Func{ia de reparti{ie pentru distribu{ia Poisson are forma:

    ^F(-r)= P(x . *)=7.4' r-^ -"^- kl

    Se poate constata cu ugurin{l cI media gi dispersia variabilei Poisson sunt:E(X): l,, girespectiv f 1;g:7t.Repartifia Poisson este consideratd repartilia evenimentelbr rare qi apare frecvent in

    modelarea unor probleme practice, cum ar fi: procesele de servire in mas[, firele de a$teptare,studiul uzurii echipamentelor etc. Mai precis, X reprezintd numdrul de evenimente rare careapar pe unitatea de timp (de exemplu, numdrul de sosiri intr-un sistem de a$teptare). Se poateardta cd intervolul de timp r dintre apartliile consecutive a doui astfel de evenimente este ovariabild exponenlial negativd de parametru 1,. Deci pentru a genera X trebuie sZ, generfury.-intervale de timp de sosire r astfel incdt suma lor sd acopere' intervalul de timp egal cuunitatea; numdrul /r al acestor variabile va fi o valoare de seleclie a variabilei Poisson. inconcluzie t satisface condilia:

    f l+l

    Lr, , l .Lr,j=t j=rDacI linem seama de formula de generare prin inversare a vdriabilei exponenfiale de

    parametru 1,, deducem ci parametrul /r satisface condilia:* *+l

    llnu , > -). >llnu, ,j=r j=rsau,

    t [+l

    lIu, , e-^ > ffu, ,j=t j=l

    unde a; e(0,1) sunt uniform distribuite.in concluzie, generarea variabilei aleatoare Poisson discrete X, de parametru 1,, se

    poate face cu urmltorul algoritm, bazat pe metoda multiplicdrii /??/ Yaduva

    AlgoritmPasul l.'Se inilializeazd generatorul G de numere aleatoare in (0,1). Se introduce parametrull" qi se calculeazd L: e'o. Se inilializeazAk:0, P: l;Pasul 2.' Se genere azd ur, e (0,1) qi se ia P : P . up;Pasul 3: Dacd P 2 L se ia k= k+ I gi se trece la pasul 2, in caz contrar se trece la pasul 4;Pasul 4: Yaloarea variabilei Poisson generatd este X : t. Se repeti pagii 2 qi 3 pdnd segenereazd lungimea doritii a qirului de valori distribuite Poisson.

    Algoritmul este eficient cdnd l, este mic, iar cdnd l. este mare gi deci L: e-z este mic,algoritmul converge foarte lent (cu probabilitatea I).

  • Alte metode??????????Metoda directd c,onsti.in umrltoarele: se introduce notatia:

    r, =f r(x = r),k=l

    qi se genereazi o variabili aleatoare luniform repartizatd, pe [0,1]. Daci o realizare y averificd rela{ia:

    Pr_r3y

  • void poisonQ{int k,n;float lan;double x,ui;print("\nGENERAREA NUMERELOR ALEATOARE CU REPARTITIE POIS SON ") ;print('\n");printf("\Dati lambda : ");scanf("o/of ',&lan);printf("\nDati numarul de simulari :");scan("o/od",&n);printf("\nU i generat Poisson');print("\n");for(k:1;k
  • L3. Generarea numerelor aleatoare dupd repartigia Hipdtrat

    O variabili aleatoare,Yare distribuf ia 72 cu n grade de libertate daci densitatea sa derepartilie este:

    -I'e 2 pentru x>0.

    Uneori, densitatea de reparti{ie se ia mai general, de forma:

    , l ,x

    - - l

    -x2 .e2o'pentru.r>0.

    in acest caz distribufia are doi parametri n gi o (o > 0). Pentru o : I se obline definitiaanterioar[.

    DacS o variabilS aleatoare Xare distribufia din defini1ie, atunci variabila aleatoare o?are distributiaj(r) gi reciproc, dac[ o variabil[ aleatoare f are distribu{ial (x), atunci \ . ,

    o 'are distribulia din definifie,;(r).

    Valoarea medie gi dispersia corespunzdtoare distribu\iei y2 cu n grade de libertatesunt respectiv r gi 2n. Legdtura dintre distribu{ia I' ,i distributia normald este datd de

    +T1fft;.t"il#""ari abitaxoare dishiuu lia z' cu n grade o",ro.nu,. (n > l) atuncidensitatea de reparti{ie a variabilei I:

    v x;", : -'

    ",8'tinde cdtre densitatea de repartifie normali cu parametri 0 gi l.Teorema 2.Daci fiecare din variabilele aleatoare independente X1,X2,...,X, are distribulienormal5 cu parametri 0 gi l, atunci variabila aleatoare Y -- Xi + Xl +...+ X: are distribu{iaI' cu n grade de libertate.

    Pentru a genera numre aleatoare dupl o repartifie Z.' cu n grade de libertate giabatere medie pdtratici o : I se poate porni, bazat pe teorema 2, de la propietatea cd un astfelde numir este o sum[ de z numere repartizate normal N(0,1), ridicate la pdtrat.

    Conform acestei proprietifi generatorul va fr:

    z| .o. .t;),* , ={

    n\. l t

    r - \ t - t- rk - LLir . i

    i=le.nr(o,t).

  • Posul I: Se genereazi z nurnere zi distribuite normal Ne(0,1), i: 1,2,...n de medie 0 qiabatere medie pitraticl l.P asul 2: Se genereazd x* cu generatorul:

    xr =lzl .j= l

    in acest caz numirul.r* astfel calculat, este un numdr aleator av6nd legea de repartifieI' cu n grade de libertate gi abatere medie patratic[ l.

    Func{ia care realizeazd generarea de numere aleatoare cu repartifie 7' are urmdtoareaformd (func{ia este rezolvatii in limbajul C+-r):

    void hipatratQtint i;float s,y,z;int k,n;print('\nGENERAREA NUMERELOR ALEATOARE CU REPARTITIE HIPATRAT");print("\n");printf('\nDati numarul de simulari :");scan("7od",&n);printf('\n Y generat Hipahat");print("\n");for(k:l;k

  • Repartifii continue

    11.1" Generarea numerelor aleatoare dupd reportigia Cauchy

    O variabil[ aleatoareXrepartizath Cauchy arc densitatea de reportiyre de forma:

    .f (*) =n( l+ x2) '

    de unde rezultd cdfunclia de repartilie este:

    ' - I 'c dt l ( - \.F(x)= [" f t1a, =: h= = _larctgx** l=y.

    . _@ rr_Ll+t- z\ z)

    Deoarece funcfia de repartilie CAUCHY este o func{ie inversabild, pentru a generagiruri de numere aleatoare cu aceastii repartifie se folosegte metoda transformatei inverse.Astfel, dac[ se genereazl, un gir fup] uniform repartizat in [0,1], atunci existi un numdr.rTcare satisface relaf ia:

    F(xr) : y*, pentru un yr fixat.Din ultima egalitate, oblinem generotorul:

    *r =E\n -:) ",k

    e N' .

    in funcqie de dimensiunile modelului analizat gi de ,"oput simuldrii, se va fixanumirul termenilor subgirului folosit in simularea numericd.

    Funcfia care realizeazd generurea de numere aleatoare cu repartitie Cauchy areurm[toarea forml (func{ia este rezolyati in limbajul C++):

    void cauchyQ{int k,n;double y,x;printf("\nGENERAREA NUMERELOR ALEATOARE CU REPARTITIE CAUC H Y") ;print("\n");print("\nDati numarul de simulari :");scanf("%od",&n);print("\nNumerele generate sunt : ");for(k:l;k

  • Generarea numerelor oleatoare dupd reportilia

    Variabila aleatoare X are reparti{ia BETAdensitatea so de repartilre este de forma:

    de parametri a Ei b, notatd $(a,b), dacd,

    l'-f.-..."-'(r - *)o-',0 < x < l"r(')--lob,r) " ' ,

    [0, in restunde:

    Bb.bj -_(?)' I-q). a > o. & > o.r(a +D)

    iar func\ia gantma f(v:) este definit[ de relalia:f(v) = [*'-' .e-'dx .

    0

    Se poate ardtad C(x)=;J, O'(X)= n(x).a(a+b+t) . (a+b)Observalie: Este suficient si se genereze independent, valorile a douf, variabile aleatoare Z.SiZnderepart i f ie T2,respectivcumgingradedelibertate,pentruaoblineprinrelafia:

    X_ z^Z. + Zn'

    valorile variabilei aleatoare X rep artizate BETA.Teoremi: Docd Xr Si X2 sunt respectiv variabile gomma f(0,1,a), f(O,t,a), atunci variabilaX =-Xt- este o variabild BETA de parantelri a Si b.Xr+ X,

    Din aceasti teoremi rezultii cd repartilia BETA este inruditi cu repartifia gamma, iargenerarea variabilei aleatoare BETA se reduce la generarea variabilei gamma. Deoarecegenerarea variabilelor de tip gammaXr $i X2reprezintd o problemi complicatI, s-au construitmetode mai simple pentru generarea variabilei BETA. in continuare vom prezenta cdtevaastfel de metode.

    Metodo 1-a: Generarea variabilei BETA de parametriintregi, o,beN*Aceastl metodi sebaze,azd pe urmdtoarea teoremi.Teoreml: Fie a, b e N* gi n : a + b - I. Fie U1 U2, ..., Un numere aleatoare unifurnte pe(0,1), independente Si notdm U6 S Up1variabila aleatoare Uyo1, de rong o, are repartilia BETA de parametri a Si b.Din aceasti teoremi rezulti urmdtorul algoritm de generare a variabilei BETA bazatl, pevariabila uniformi de rang a.

    Algoritm:Pasul 0. Se inifializeazd generatorul de numere aleatoare uniforme pe (0,1). Se introducparametri a,beN*. Se calculeazd n: d + b - l.Pasul /. Se genereazd n numere aleatoare uniforme pe (0,1), independente, (Jr, lJz, ... , (Jn $ise ordoneazi crescitor aceste numere.

    T4

  • Pasul 2. Numirul generat cu reparti{ia BETA este X = Up's, unde Uloy este variabila de rangegal cu a.Pasul 3. Se repeti pagii I gi 2 pdne cdnd se obline lungimea doriti a girului generat.

    Metoda II-a: Generarca variabilei BETA de parametri pozitivi subunitari a,be(0,1).Aceastii metod[ se bazeazlpe urmltoarea teorem6.Teoremi:Dacd0 I esteurmitorul-

    Algoritm:Pasul 0. Se inilializeazil generatorul de numereparametri a gi b. Se ia p : b - l.Posul 1. Se genereaza Urli Uz numere aleatoare

    calculeazi valorile V =Ui si r =u! .Pasul 2. Dacd V + T> I se trece la pasul l.Pasul

    -?. Numirul generat cu repartifia BETA este X: V.Pasul4. Se repetd paqii l, 2 gi 3 p6nI cdnd se obline lungimea doriti a girului generat.Eficienfa acestui algoritm se poate exprima cu ajutorul probabilit[1ii de respingere (pasul 2)care este: pr: | - a. p(a,b)

    aleatoare uniforme pe (0,1). Se introduc

    uniforme qi independente pe (0,1), qi se

    15

  • Metoda IV-a: Genercrea variabilei aleatoare BETA, in cazul c > I gi b > 1, se poate reducela generarea unei variabile normale conform teoremei urmdtoare.

    .Teoremi. Fie a> l , b > l , A : a- l , B : b- | Ei C = A * B : a * b - 2. Dacd,- t \ / r ' \ ' / l - r ' \ '

    t " '2f , lx l= l : l ' l + l 'c ' s i 4(r) =s-2( . [

    - -+l , atunci l (x)sf t1(x) ,x e [0, t ] .\A) \B) \ C/

    Deoareceli(x) este proporfionall cu densitatea de probabilitate BETA de parametri agi b, iar ft1(.r) este propo(ionali cu densitatea normala tl(!,

    ^l-'1, ,"rulta ci pentru\c zJc )generarea variabilei BETA, putem aplica urmdtorul algoritm bazat pe metoda respingerii, incazula>lqib>1.

    Algoritm:Pasul 0. Se initializeazd generatorul de numere aleatoare unifonne pe (0, I ). Se calcu leazd:A: a- l , B = b - | SiC : A+ B, L= C. lnC, p=4, o ={.c' 2P asul 1. Se genere azd Z normale nf(O, I ).Pasul2. Se calculeaziY: p* Z. o.Pasul 3. Dacd Y l se trece la pasul I [Itrebuie sa ia valori pe (0, 1)].Pasul4. Se gener eaz; Ilnormali N(0,1). Dac[ In U > A'"f-L"l * a.n(4\* , - t'

    \A) ( B ) '2 ' t 'respinge perechea (U,I) li se trece la pasul l.in caz contrar numdrul generat cu repartifiaBETA esteX: LPasul 5. Se repet[ paqii 1, 2,3 Si 4 p6nd cdnd se obline lungimea doriti a girului generat.Eficien,ta acestui algoritm se poate exprima prin numlrul mediu de incercdri din pasul 4pentru a-obfinerea unei valori de selec{ie X, care este aproximat de relalia:

    *= A+B

    2-" lA- B

    Obsewalie:Acest algoritm se poate imbundtlfi in cazul reparti{iei BETA simetrice (a: b), dac[ utiliz6murmdtoarea lemi:

    / ^z\A "2LemE: Func{ia q(r)=l t - j, | .rT ,o = A-1, satisface relafia:

    \ 2-A)o4

    .so l ( .so ) ' 3l - "

  • Pasul l. Se genere azlZnormale N(0,1) 9i se ia t =; [t .i)

    Pasul 2.DacL I< 0 sau I'> I se trece la pasul I [Itrebuie sa ia valori pe (0,1)].PasulJ. Se genere art IJ normalI N(0,1). DacL U, | - = Zo . ^, se terce la pasul 6.8a-12'Pasut 4. Daca u ,l - =zo =-: (::l', ," ..".. la pasul t.&a-B 2 [8d-8/Pasul S; Dacd lnU> A-ln(4.f .(f -f))+ 4, r"trece la pasul Lin cazcontrar numdrul

    L

    generat cu reparti{ia BETA esteX: I/.Pasul6. Se repet[ pagii l, 2,3, 4 qi 5 pdnd cdnd se obline lungimea doritd a qirului generat.

    Repartilia BETA nesimetricl de parametri a, b e R, a, b > 1 se utilizeazd in cazulmodelelor de simulare pentru rezolvarea problemelor de tip PERT. Aici, se utilizeazd, de faptvar iabi laW:BETA-PERT,def in i t iderepart i { ia l l / :p+(q-p).X,e>p,undeparametr ireali a gi & sunt supraunitari gi diferili.

    Metoda V-a: Generarea variabilei aleatoare X de reparti{ie BETA cu metode aproximative.Metodele aproximative de generare a numerelor aleatoare const[ in inlocuirea pe anumiteporfiuni/intervale a repartiliei considerate cu o lege de repartifie mai simpl5" foarte apropiatide cea initialE.

    O astfel de metodd aproximativd a fost utilizati de Clark pentru reparti{ia BETA.Aceasti repartilie a fost folositi de CLARK penhu analiza drumului critic. Pentru o repatilieBETA de parametrii a=Z+Jl $i F=2-Jr, func{ia de repartilie a fost aproximatd pepatru intervale prin funcfii liniare sau prin func{ii radical de ordinul doi gi patru. in generalfunc{iile de repartilie pot fi aproximate cu funcfii liniare sau de gradul doi. Astfel numlrul x,de repartifi" gefA de parametrii (z- J|,2*JZ), r" genereazi in func{ie de valoareavariabileialeatoare a uniform repartizate in intervalul [0,1], cu ajutorul generatorului:

    ,ae[0-0,2825)

    I : :\ l

    *- * 0,4gg5, u ef0,2825 - 0,47)1.8760,424 -z + 0,55, u ef0,47 - 0,96)

    t - l ; , re[0,e6- l ]

    xp=

    Algoritmul:Pasul l: Se genereazilun numdr aleator z uniform rcpartizatin [0,1];Pasul2; Se identifici intervalul in care apar{ine numdrul generat u, prin compararea valoriilui z cu valorile intervalelor considerate. Pentru identificarea rapidd a intervalului, girespectiv, a funcliei asociate, se poate folosi un algoritm de cdutare semilogaritmicd;Pasul

    -l: Se calculeazn xp, conform formulei corespunzitoare intervalului identificat.

    l7

  • Pasul4: Se repetil pagii l, 2 gi 3, care reprezintl de fapt metoda transformatei inverse, pdndcdnd se ob{ine lungimea dorit6 a qirului de numere aleatoare generate dup[ acest tip derepartifie.

    in continuare, prezentdm succint un algoritm de cdutare semilogaritmicd a rangului,' intervalului in care se glsegte numdrul generat, pentru metoda transformatei inverse, cazul";. discret.

    Presupunem variabila discretE de forma:

    - .

    ( * , x) x,)X ,l " I, in care rp,,i =l,n reprezintl frecventele relative ale apariliei

    \P' Qz Q,)valorilor.q, sau

    --

    (* , x) x") ^X :l " l, in care pi reprezintd frecventele absolute ale apari{iei (probabiltdfile)[p' Pz p, ) '

    valorilorxi.

    PaS ii al goritmului de cdutare semilogaritmicd:Pasul 1:

    o Se inigializeazdgeneratorulG de numere uniform distribuite in [0,1];. Se citesc valori le: n, x1, p,, i =l,n;

    o Se calculeaztr frecventele relative cumulate: eo = 0, e,

    St

    \Pasul 2:

    a

    Pasul 3:a

    Pasul 4:a

    Pasul 5:o

    Pasul 6:a

    Pasul 7:a

    Se determini indicele & pentru care(pk_t < 0,5 < po gi se considerd i : /c;

    Se genereazd u, e [Ql] cu generatorul G;

    Dacd u, > 0,5 se trece la pasul 7;

    i : i - l i

    Dacl u, < e, so trece la pasul 5, ?n caz contrar se trece la pasul 9;

    i : i * l ;

    Pasul 8:r Daci u i ) e, se trece la pasul 7;

    Pasul 9:o x =, t t .

    t8

  • l. Cu ajutorul unui procedeu de ciutare semilogaritmic[, prin care se asigurdcregerea vitezei de calcul, se gdsegte rangul i al intervalului pentru care esteindeplinitd condilia e,_r I u i < e, $i atunci valoarea cdutatd este x : ri ;

    2. in algoritmul de generare a numerelor aleatoare dup[ repartifia BETA, duplidentificarea intervalului in care se afltr numIrul a generat, se identific[ qi formafunc1iei, asociatii intervalului, dupd care se va genera numdrul aleator xo1.

    3. Algoritmul funcfioneazi identic ?n cazul variabilelor aleatoare discrete ?n caresunt date probabilitilile de aparilie ale valorilor variabilei, inlocuind $,i cu pi.

    \ Funclia care realizeazd generarea de numere aleatoare cu repartilie BETA areunndtoarea formE (func{ia este rezolvatl in limbajul C++}:

    void BETAQ{int n,k;float u;printf('\nGENERAREA N UMERELOR ALEATOARE CU REPARTITI E B ETA ") ;printf('\n");printf('\nDati numarul de simulari :");

    . scan("7od",&n);print("\nNumerele generate sunt :");for(k:l;k

  • Generarea numerelor aleoloare dupd o repartigie normald

    A) Generarea numerelor aleatosre dupd o repartilie normold folosind teoremaIimitrt centrald

    Aceastd metodI sebazeazdpe unnitoarea forml particulard a teoremei limit[ central[.Teoremtr: Daci se dI o selecfie Xr,...Xo efectuati asupra unei variabile aleatoare X astfelincift E(X): p $ d(8: o2, atunci variabila:

    f xr -n ' l tk=l

    r to-{ntirrde asimptotic, cdnd n ---+ {, cdtre o reparti}ie normalb N(0,1).

    ln cazul in care X: U (adicn o variabil[ uniforml pe (0,1)), rezultl. ci daci U1,...,(Jneste o selecfie intdmplitoare asupra lui U, atunci variabila Y : Ut a...+U, are asimptotic orepartifie normal5 cu media f(y)=I 9i dispersia O'(y)=J1, d.our.." g(U\=! qi2122

    t

    o' f t1)=L.l2

    AceastE teoreml poate fi folositi pentru generarea unei variabile normale N(0,1). S-aconstatat cd dacl volumul selectiei z satisface conditia n> 10, atunci variabila:

    Y-n.|

    Z = -#, poate aproxima bine o variabili N(0, I ). O valoare a lui n convenabild esteln

    1' tzevident n: 12, deoarece in acest caz D2 (Y) : I gi deci Z = (Jr +...+Up - 6.

    Aceast[ metodd de generare a variabilei normale N(0,1) este,aproximativd dar destulde rapid6. Existi gi alte metodg mai exacte, de generare a unei valori de selecfiecorespunzind unei variabile ff(0,1) bazate pe teorema limiti centrald, cum ar fi: metodapolarS" metoda lui Teichroew, metoda lui Butcher etc.

    Ca o consecinfi a acestei teoreine prin insumarea unui numdr relativ mare de numererepartizate uniform, se oblin numere repartizate normal.

    Dac[ se line seama de faptul ci in cazul variabilelor uniforme dispersia este l:12,rezulti facilitd{i de calcul daci seconsiderd 12 numere uniform repartizate in [0,1]. Pentru agenera numere repartizate normal de medie lz gi abatere medie pitratic[ o, se poate folosiurmitorul algoritm:

    Algoritm:Pasul./.' Se genereazd12 numere unifonn repartizatein [0,1], u,, i =l)l .Pasul2.'Se calculeazi mirimea U, cu relatia: U =fu,-A.

    PasuLS.' Numdrul .ft generat dupi repartitria normalil" .ul.ul.-I cu relafia: xk = nt + o .(JPasul4.' Se repeti paSii t, 2 gi 3 pdn6 cdnd se genereazdnumdrul total de valori.4.

    Observalie:In codul progrmului, variabila aleatoare .r1 generatd este codificatd ale.

    Z_

    ! , r1 l

    2l

  • I'l

    J

    ir i

    ilt t

    ' l

    Funcfia care realizeazi generarea de numere aleatoare cu repartifie normal6, de mediem qi abatere medie pitraticd o, N(mo o), are urmitoarea forml (funcfia este rezolvatd inlimbajul C++):

    void gauss${

    float med,sigma,ale;int n,k;short int i;print("\n GENERAREA NUMERELOR ALEATOARE CU REPARTITIE NORMALA ");printf('\n");printf("\Dati media :");scanf("ohf ',&med);printf("\n Dati sigma : ") ;scan( "ohf ',&si gm a) ;printf("\nDati numaruI de simulari : ");scan("oZd",&n);print("\nNumerele generate sunt :");

    for(k:1;k

  • Generarea numerelor aleatoare dupd o reparti$e normald N(t+d

    Variabila aleatoare X are o reparti{ie normali unidimensionalE, de medie p gi dispersieo'2, notatii.l(p,o), dacl are o densitate de repartilie de forma:

    , _G-il'"f(*)= ' = ., ,o' ,6- i l l r

    de unde rezultl cd funcfia de re-partifie este:1 r ( t -pf

    -J '

    F(x)= ,^ le 2"' dl

    o. ih, _ '*

    Se observf, ci functia de repartifie nu are o forml analiticd expliciti. Se arat* uqor cIE(X): pSi D2 (11 : o2.

    Un rol importantrepartifie este: _printre

    reparti{iile normate ?l are repartilia N(0,1) a cdrer- func{ie del ,F(,) = i * *kl). sign(z)

    unde,1 t.

    -''

    A(zl= - le

    2dt,z>0't'zn i

    este func6r-a Laplace.Repartifia N(0,1) are un rol deosebit de important deoarece oricare ar fi variabila X

    normal5l(F"o) ea se bucurd de proprietatea: \ ..

    .]{: c.Z * 14dincarerezul td Z=X'ts.

    urlo,rl Potrivit acestei relafii,lp"nt* ,.ooui pru"ti"" estersuficient s6 secunoascl repartifia variabilei Z, sau a func{iei Laplace. Astfel, mai int6i se genereazd valorilevariabilei normale /(0,1) gi apoi cu proprietatea de mai sus se oblin numere aleatoarereoartizate N(,p,o)-

    Avdnd in vedere aspectele practice, reparti{ia normali poate fi consideratd cea rnaiimportantd dintre reparti{i i le neuni forme.

    ????2???????????? DUPA CE ALG????

    voidnormQ t /{

    int n,k;double ale,auxl ,aux?; '/float u,med,disp;print('\nCENERAREA NUMERELOR A LEATOARE CU REPA RTITI E N ORMALA") ;print("\n");print('\Dati media :");scan("7of',&med);print('\n Dati dispersia :");scanf("o/of',&disp);print('lnDati numarul de simulari :");

    24

  • scan("Yod",&n);print("\n U generat Normala");print("\n");

    for(k:l;k

  • r iI

    )r i i

    i

    11.1. Generarea numerelor olealoare dupd o repartftie exponen(ial negativd

    O variabil[ aleatoare X are distribufie exponenfial negativ[ dac6 densitatea sa derepartifie este de forma:

    [O Dentru xo '

    iar func{ia de repartifie exponen{ial negativi are forma:

    =l-e-n' ' =y, pbntrur> 0.

    Se constat[ cu ugurinfd cd media gi dispersia arvalorile:

    E(X)= j * D'(x)=+.Deoarece funcfia de repartifie EXPONENTIALA este o func{ie inversabild, pentru a

    genera qiruri de numere aleatoare cu aceastf, repartifie se poate folosi metoda transformateiinverse. Astfel, daci se genereazd un numiryr ?n [0,1] cu derlsitatea de probabilitate continu5,atunci numdrul x1 avdnd funclia de densitate de probabilitate (x) trebuie sd satisfacl rela{ia:

    F(x) : y, de unde x : FI (y).

    Din ultima egalitate, oblinem generatorul:

    Ix* =-*. tn( t -y*) .

    i

    Rezultii cd pentru a genera numere aleatoare xo dup[ o repartilie exponenfialnegativS, este suficient sd gener6m numere aleatoare y* e [0,1] gi si folosim ultima rela{ie.

    Observalie:

    Generarea fiind aleatoare, uniform repartizatd pe [0,1], in practicd, pentru reducereaduratei de calcul, se poate inlocui girul de valori generate {l - yn\ cu girul de valori lt1,}, careeste evident tot un gir de numere aleatore uniform distribuite pe [0,1].

    in acest caz, pentru a genera numere aleatoare x* dupd o repartitie exponen{ialnegativl se folose$e generatorul:

    ln yt^*

    - -----l-'

    A

    F(x) ='lf Q)a, ='[A. e-^' dt

    2,11\i r - ' r I

    27

  • Func{ia care realizeazd generarea de numerenegativf, are urmdtoarea formi (func{ia este rezolvatd ?n

    aleatoare cu repartilie exponen{iallimbajul C++):

    void expon( )Jtfloat A;int k,n;printf("\TGENERAREA NUMERELOREXPONENTIALA");printf("\n");pr'rnt('\Dati lambda :");scan("0/0fl'.&A);printf("\nDati numarul de simulari :");scanf("7od",&n);print("\nNumerele generate sunt :");for(k:l;k