Documente Academic
Documente Profesional
Documente Cultură
Repartifii discrete
in modelarea
unorproblemepracticeintervinfrecventvariabilealeatoarecu repartilii
caresuntdedusefie pe calelogic6,fie ca urmarea verificirii uneiipotezeprivind concordanfa
dintre repartiqiaempiricl gi cea teoretici. in continuarevom prezentac6tevadin cele mai
frecventintdlniterepartifii?naplicaliileeconomice,
industriale,
frziceqi studiul fenomenelor
naturii.
unde,
(t
Xr=l
o \
Intr-adevi"evenimentul
a doui evenimente:,, in primele
{X: *} sescrieca intersecfia
fr- I efectulri ale experien{eievenimentull seproducede m - I ori" gi ,, ?na fr-aefectuarea
experienfeise produce1". Probabilitatea
primuluidin acestedoudevenimenteeste(conform
schemeilui Bernoulli):
f' n'(x)=#
u(x)=
Ar): cifq" ,
unde: z: reprezintinumlrultotalde bile;
;r = reprezintiinumdrulde bile albe;
q : reprezintlprobabilitatea
de a extrageo bil6 albd;
p: binomialareprezintiprobabilitatea
de a extrageo bil5 neagri.
Dac[ se genercazlun numir I e [0,1] uniform repartizatatuncivom avea:
P{risP): P: xlnAceastiirelafiene permitesi stabilimo analogiein procesulde generarea numerelor
aleatoarecu reparti{iebinomiald.
\
Algoritmul
Pasull-' Seintroducparametriinecesari
simulf-riigi anume:
- N- numdrulde generiri(lungimeagiruluigenerat);
- parametrulru (numdrultotal de bile din urni);
- parametrulp(probabilitatea
de a extrageo bil6 alb[).
Pasul 2.. Se genereazirn numerealeatoare4 e [0,1], ,' : l, 2, -.. , m, uniform
repartizatein [0, l];
Pasul -3.' Se compari fiecare numir generatri cu probabilitatea evenimentului
favorabilp,iar rczultatulcompaririise adun[ la variabilar, carereprezintlnumdrulgenerat,
astfel:
- dacl rispatuncid:l;
- dacd4>patuncid:0;
- se facesuma.r: x * d.
Pasul 4-' Variabilageneratlx1: x;
\
Posul 5.' Se testeaz5daci procesulde generares-a terminat: daci k < ,M se reia
s-aterminat.Cu alte cuvinte,se
algoritmulde la pasul2,\n cazcontrarproc-sulde generare
qirului
generat(ltr).Evidentci in
repettrpaqii2, 3 gi 4 pdn[ cind se atingelungimeadoriti a
=
fiecareiterafiek: l, 2,..., N, variabilageneratixl x.
Funcfiacarerealizeazigenerarea
de numerealeatoarecu repartifie BINOMIALA are
urmitoareaform[ (func1iaesterezolvattr?nlimbajul C++):
void0
,{
int k,n,i,d,m,x;
float r,p;
print("\nGENERAREANUM ERELORALEATOARE CU REPARTJTIEB INOM IA LA ") ;
print("\n");
print('\nDati numarultotaldebile din urna:");
scanf("Yod",&m);
print('\nDati probabilitatea
dea extrageo bila alba:");
/
scanf("o/of',&p);
printf("\nDatinumarulde simulari:");
scan("oZd",&n);
print(l'\r X generatBinomiala");
print('\n");
for(k:l;k<:n;k++)
(
\:
x:0;
fo(i--O;i<m;ii-r)
{
r-(float)(rand0 % I 00)/l 00;
if (r>p)d:0;
.,
lsed:l;
x+:di
print("\n %ol0.5f',r);
printf("o/oI0d",x);
getch0;
clrscr{);
)
girurilorde numerealeatoare
Schemalogici pentrugenerarea
dup[ o repartifieBINOMIALA
esteprezentatiin figura l.
1 2
k "'\
variabilaateatoare
discretdx,(0
P* "')
\Po Pr Pz
de parametruludac\funcyiasa defrecvenldarc formaurmdtoare:
u'" o reparti{iePoisson
= o,l,2,3,...
pt = p(x - *)=
i. "-^,t
Func{iade reparti{iepentrudistribu{iaPoissonareforma:
l+l
, l.Lr,
Lr,
j=t
j=r
prin inversare
DacI linem seamade formulade generare
a vdriabileiexponenfialede
parametru1,,deducemci parametrul/r satisfacecondilia:
*
*+l
,
llnu
, > -). >llnu,
j=r
j=r
sau,
t
[+l
j=t
j=l
lIu, , e-^>ffu, ,
undea; e(0,1)suntuniformdistribuite.
in concluzie,generareavariabilei aleatoarePoissondiscreteX, de parametru1,, se
poatefacecu urmltorul algoritm,bazatpemetodamultiplicdrii/??/ Yaduva
Algoritm
generatorul
Pasul l.'Se inilializeazd
in (0,1).Se introduceparametrul
G de numerealeatoare
l" qi se calculeazd
L: e'o.SeinilializeazAk:0,P: l;
Pasul2.' Segenere
azdur,e (0,1)qi se ia P : P . up;
Pasul3: DacdP 2 L seia k= k+ I gi setrecela pasul2, in cazcontrarsetrecela pasul4;
Pasul 4: Yaloareavariabilei PoissongeneratdesteX : t. Se repeti pagii 2 qi 3 pdnd se
genereazd
lungimeadoritii a qiruluide valori distribuitePoisson.
Algoritmulesteeficientcdndl, estemic, iar cdndl. estemaregi deciL: e-zestemic,
algoritmulconvergefoartelent(cu probabilitatea
I).
Alte metode??????????
Metodadirectdc,onsti.inumrltoarele:se introducenotatia:
r, =f r(x=r),
k=l
.Ir.,Z','2
j=r
j=l
void poisonQ
{int k,n;floatlan;
doublex,ui;
print("\nGENERAREANUMERELORALEATOARECU REPARTITIEPOISSON") ;
print('\n");
printf("\Dati lambda:");
scanf("o/of
',&lan);
printf("\nDatinumarulde simulari:");
scan("o/od",&n);
printf("\nUi generatPoisson');
print("\n");
for(k:1;k<:n;k++)
(
I
ui: (double)(randQ
%100)ll00;
print("\n % I 0.5f',ui);
x:-log(I -ui)t l/lan;
print("%l0.5lf',x);
)
getchQ;
clrscrQ;
)
I
Schemalogicdpentrugenerarei!
qirurilorde numerealeatoare
dupdo reparti{iePOISSONeste
prezentatiin figtra2,
????????????2???
v'
i
I
Uneori,densitatea
dereparti{ieseia mai general,de forma:
,l
,*,
={
,x
--l
-x2 .e2o'pentru.r>0.
z|.o..t;)
in acestcazdistribufiaaredoi parametri
n gi o (o > 0). Pentruo : I se oblinedefinitia
anterioar[.
DacSo variabilSaleatoare
Xare distribufiadin defini1ie,
atuncivariabilaaleatoareo?
aredistributiaj(r) gi reciproc,dac[ o variabil[aleatoare
f aredistribu{ial(x), atunci \ . ,
o'
aredistribuliadin definifie,;(r).
Valoareamedie gi dispersiacorespunzdtoare
distribu\iei y2 cu n grade de libertate
sunt respectivr gi 2n. Legdturadintre distribu{iaI' ,i distributianormaldeste datd de
+T1fft;.t"il#""ari abitaxoare
dishiuu
o",ro.nu,.(n > l) atunci
liaz' cun grade
densitatea
dereparti{ie
a variabileiI:
x;"
v, :-
'
",8'
tinde cdtredensitatea
de repartifienormali cu parametri0 gi l.
Teorema2.Daci fiecaredin variabilele
aleatoare
independente
X1,X2,...,X, aredistribulie
normal5cu parametri
0 gi l, atuncivariabilaaleatoare
Y -- Xi + Xl +...+ X: are distribu{ia
I'
cu n gradede libertate.
-rk -
n
\.lt
LLir .i
i=l
e.nr(o,t).
1,2,...nde medie 0 qi
xr =lzl .
j=l
I'
Func{iacarerealizeazdgenerarea
de numerealeatoare
cu repartifie 7' areurmdtoarea
formd(func{iaesterezolvatiiin limbajulC+-r):
void hipatratQ
t
int i;
float s,y,z;
int k,n;
print('\nGENERAREANUMERELORALEATOARECU REPARTITIEHIPATRAT");
print("\n");
printf('\nDati numarulde simulari:");
scan("7od",&n);
printf('\n Y generat Hipahat");
print("\n");
,/
for(k:l;k<:n;k++)
{'
s:0.;
for(i:0;i<n;i++)
{ z{float)(rand0 % 100/100;
s+:pow((double)a2.);
)
print("\n o/ol0.5f',2);
printf("%10.5f',s);
)
getch0;
clrscr$;)
Schemalogic[ pentrr.lgenerareagirurilor de numerealeatoaredupd o repartilie X2
esteprezentatdin figura3.
l0
rr.
Repartifii continue
11.1"Generareanumerelor aleatoaredupdreportigiaCauchy
O variabil[aleatoareXrepartizath
Cauchyarcdensitatea
dereportiyre
deforma:
.f(*) = n(l+
x2)'
'I'c dt
l(
.F(x )=["ft1a,=: h= = _ la r c t g x * * l= y .
rr_Ll+t- z \
z)
_@
-:)
",k
e N' .
T2
Generareanumereloroleatoaredupd reportilia
Variabila aleatoareX arereparti{iaBETA de parametria Ei b, notatd $(a,b), dacd,
densitateaso de repartilre estede forma:
l'-f.-..."-'(r
" - *)o-',0<x <l ,
"r(')--lob,r)'
in rest
[0,
unde:
I-q).
a > o.&> o.
Bb.bj-_(?)'
r(a +D)
iar func\iagantmaf(v:) estedefinit[derelalia:
f(v) =
[*'-'
.e-'dx .
Sepoateardtad C(x)=;J,
O'(X)=
n(x).a
(a + b + t ). (a + b )
Observalie:Estesuficientsi se genereze
independent,
valorile a douf,variabile aleatoareZ.
SiZnderepartifie
T2,respectivcumgingradedelibertate,pentruaoblineprinrelafia:
X_
z^
Z. + Zn'
valorile variabileialeatoare
X repartizateBETA.
Teoremi: DocdXr SiX2 sunt respectivvariabilegommaf(0,1,a), f(O,t,a), atunci variabila
X =-Xt-
Xr+ X,
T4
MetodaII-a: Generarca
variabileiBETA de parametripozitivi subunitari a,be(0,1).
Aceastiimetod[ se bazeazlpeurmltoareateorem6.
Teoremi:Dacd0<a<lSi0<b<lriarUrgiUzsuntvoriabilealeatoareuniformepe(0,1)
independente
condisionard
Si dacd V =tlf , f =Ui atunci reportilia variabilei y : JV+T
de V + T < I esterepartrlia BETAdeparametri a Si h.
Algoritmul ce derivl din aceastiteorml pentrugenerarea
variabilei BETA cdnd ambii
parametrisuntsubunitariesteprezentatincontiunare.
Algoritm:
Pasul 0. Se inilializeazl,generatorulde numerealeatoareuniformepe (0,1). Se introduc
parametria,6e (0,I ).
Pasul 1. Se genereazdU6i U2 numerealeatoare
uniformegi independente
pe (0,1), qi se
11
calculeaz[
valorileV =Uf qi T =U! .
Pasul2. DacdV + T> I setrecela pasulL
PasulJ. Numdrulgeneratcu repartiliaBETA esteX =
V + T'
f.,.:
calculeazi
valorileV =Ui si r =u! .
Pasul2. DacdV + T> I setrecela pasull.
Pasul-?.Numirul generatcu repartifiaBETA esteX: V.
Pasul4.Serepetdpaqiil, 2 gi 3 p6nIcdndseoblinelungimeadoriti a giruluigenerat.
Eficienfaacestuialgoritmse poateexprimacu ajutorulprobabilit[1iide respingere(pasul2)
careeste:pr: | - a. p(a,b)
15
MetodaIV-a: Genercrea
variabileialeatoareBETA, in cazul c > I gi b > 1, se poatereduce
la generarea
unei variabilenormaleconformteoremeiurmdtoare.
.Teo r e mi.Fie a> l, b > l, A : a - l, B : b - | E i C = A * B : a * b - 2 . Da c d ,
/ r' \' /l -r' \'
\ l= :l l ' l +
f -,tlx
\A )
\B )
"'2
\ - - +C/
l,
a tu n cil( x) sft1e( x)
[0,x
,t].
Deoareceli(x)esteproporfionallcu densitatea
de probabilitateBETA de parametria
gi b, iar ft1(.r)este propo(ionali cu densitateanormala tl(!,
^l-'1,
\c zJc
)
,"rulta ci pentru
generarea
variabileiBETA, putemaplica urmdtorulalgoritmbazatpe metodarespingerii,in
ca zu la>lqib>1.
Algoritm:
Pasul 0. Seinitializeazdgeneratorul
de numerealeatoareunifonnepe (0, I ). Secalculeazd:
A: a- l, B = b - | S iC: A + B , L= C. ln C, p = 4 ,
c'
o ={.
Pasul 1. Segenere
azdZ normalenf(O,I ).
Pasul2.SecalculeaziY: p* Z. o.
Pasul3. DacdY <0 sauI> l setrecela pasulI [Itrebuie saia valori pe (0,1)].
t'
Pasul4. Segener
eaz; Ilnormali N(0,1).Dac[ InU > A'"f-L"l * a.n(4\*
, ( B )
'2't'
\A)
respingeperechea(U,I) li se trecela pasul l.in caz contrarnumdrulgeneratcu repartifia
BETA esteX: L
Pasul5. Serepet[paqii1, 2,3 Si4 p6ndcdndseoblinelungimeadoriti a giruluigenerat.
Eficien,taacestuialgoritm se poateexprima prin numlrul mediu de incercdri din pasul 4
pentrua-obfinerea
uneivalori de selec{ieX, careesteaproximatde relalia:
A +B
*=
2-"lA -B
Obsewalie:
Acestalgoritmsepoateimbundtlfiin cazulreparti{ieiBETA simetrice(a: b), dac[ utiliz6m
urmdtoarealemi:
/
^ z\A
"2
.rT
LemE:Func{ia
q(r)=l t - j,
relafia:
,o = A-1, satisface
|
\ 2 -A )
o4
.s o
l (.s o
3
)'
l' - "
<aa fu
)<l
r-.t.--, o,
\-,
8 a _ t2 8 " { -t.[8 " _8 )
,.
z?
t6
Pasull. SegenereazlZnormale
N(0,1)9i seia t =;
.i)
[t
Pasul2.DacL I< 0 sauI'> I setrecela pasulI [Itrebuie saia valoripe (0,1)].
Zo
PasulJ. Segenere
art IJ normalI
N(0,1).DacLU, | - = . setercela pasul6.
8 a -1^,
2'
Pasut4. Dacau ,l - =zo =-: (::l',
& a-B 2 [8d -8 /
xp=
t-l;,re[0,e6-l]
Algoritmul:
Pasul l: Segenereazilun
numdraleatorz uniformrcpartizatin[0,1];
Pasul2; Se identifici intervalulin careapar{inenumdrulgeneratu, prin compararea
valorii
lui z cu valorile intervalelorconsiderate.Pentru identificarearapidd a intervalului, gi
respectiv,a funcliei asociate,sepoatefolosi un algoritmde cdutaresemilogaritmicd;
Pasul-l: Secalculeazn
intervaluluiidentificat.
xp, conformformuleicorespunzitoare
l7
x)
x,)
" I, in care rp,,i=l,n
Qz
Q,)
valorilor.q,sau
( * , x)
X- - :l
[p' Pz
valorilorxi.
x")
^ carepi reprezintd
" in
frecventele
absoluteale apari{iei(probabiltdfile)
p, )'l,
Secalculeaztr
frecventele
relativecumulate:eo = 0, e,
i:i-li
i: i* l;
x = ,tt.
\
Pasul 2:
Pasul3:
Pasul4:
Pasul5:
St
Pasul 6:
Pasul 7:
Pasul 8:
Pasul 9:
t8
l.
void BETAQ
{
int n,k;floatu;
printf('\nGENERAREA
N UMERELORALEATOARECU REPARTITIE B ETA") ;
printf('\n");
printf('\nDatinumarulde simulari:");
. scan("7od",&n);
print("\nNumerelegeneratesunt:");
for(k:l;k<:n;k++)
t
t
u=(float)(rand$
% I 00Vl00.;
i(u<0.2825)
printf('\n7o7.5lf',pow(0.25,u/
l .64));
else
{'
if(u<O.47)
print('\n yo7.5lf',ul| .876+0.499
5);
else
{
i(u<0.96)
print("\n 7o7.5lf',u*0
.424+0.55);
else
printf(\n%7.51f',1-sqrt((l-u)8.0);
r
J
t
t
getchfl;
clrscr0;
)
Schemalogicl a funcfiei citre genereaz[numerelealeatoarecu reparti{ie BETA este
reprezentatdin fi gura5.
l9
Generareanumereloraleoloaredupdo repartigienormald
A) Generarea numerelor aleatosre dupd o repartilie normold folosind teorema
Iimitrt centrald
AceastdmetodI sebazeazdpe
unnitoareaforml particularda teoremeilimit[ central[.
Teoremtr:Daci se dI o selecfieXr,...Xoefectuatiasupraunei variabilealeatoareX astfel
inciftE(X): p $ d(8:
o2,atuncivariabila:
Z_
fk=l x r - n ' l t
rt
o-{n
{, cdtreo reparti}ie
tirrdeasimptotic,cdndn ---+
normalbN(0,1).
ln cazulin careX: U (adicno variabil[ uniforml pe (0,1)),rezultl.ci daci U1,...,(Jn
esteo selecfieintdmplitoareasupralui U, atuncivariabilaY : Ut a...+U, are asimptotico
repartifienormal5cu media f(y)=I
qi
o'f t 1) = L .
l2
AceastEteoremlpoatefi folositi pentrugenerarea
uneivariabilenormaleN(0,1). S-a
constatat
cd dacl volumulselectieiz satisface
conditian> 10,atuncivariabila:
Y -n.|
=
-#,
Z
poateaproximabineo variabiliN(0,I ). O valoarea lui n convenabildeste
ln
1'tz
!,r1 l
evidentn: 12,deoarece
in acestcazD2(Y): I gi deciZ = (Jr+...+Up - 6.
Aceast[metoddde generare
a variabileinormaleN(0,1)este,aproximativd
dar destul
de rapid6. Existi gi alte metodg mai exacte,de generarea unei valori de selecfie
corespunzindunei variabileff(0,1) bazatepe teoremalimiti centrald,cum ar fi: metoda
polarS"metodalui Teichroew,metodalui Butcheretc.
Ca o consecinfia acesteiteoreineprin insumareaunui numdrrelativ mare de numere
repartizateuniform, seoblin numererepartizatenormal.
Dac[ se line seamade faptulci in cazul variabileloruniformedispersiaeste l:12,
rezulti facilitd{ide calculdaci seconsiderd
12 numereuniformrepartizatein [0,1]. Pentrua
generanumererepartizatenormal de medielz gi abateremediepitratic[ o, se poate folosi
urmitorulalgoritm:
Algoritm:
Pasul./.'Segenereazd12
numereunifonnrepartizatein
[0,1], u,, i =l)l
2l
Funcfiacarerealizeazi generarea
de numerealeatoarecu repartifienormal6,de medie
qi
pitraticd
m
abateremedie
o, N(moo), are urmitoareaforml (funcfia este rezolvatdin
limbajulC++):
void gauss$
{
float med,sigma,ale;
int n,k;
shortint i;
print("\n GENERAREANUMERELORALEATOARECU REPARTITIENORMALA ");
printf('\n");
printf("\Datimedia:");scanf("ohf
',&med);
printf("\n Dati sigma:") ;scan("ohf',&sigma);
printf("\nDatinumaruIde simulari:");scan("oZd",&n);
print("\nNumerelegenerate
sunt:");
for(k:1;k<:n;k++)
{ ale:0;
for(i=0;icl2;i++)
ale+:(float)(rand0% I 00)/l 00.;
ale:(ale-6.)*sigma+med;
printf('\n Yo7.5f",ale);l
getchQ;
clrscr$;
)
'l
J
i
ri
il
tt
'l
Schemalogici pentrugenerarea
numereloraleatoare
dupdrepartifianormalI N(m, o) este
reprezentatd,
in fi gura 6.
fii,:lt
\.ft
-/
22
( t- p f
- J'
,^
o .i h ,
le
2"' dl
_'*
A(zl=
t.
-''
2dt,z>0
-le
't'zni
estefunc6r-a
Laplace.
RepartifiaN(0,1)are un rol deosebitde importantdeoarece
oricarear fi variabilaX
\ ..
normal5l(F"o) easebucurdde proprietatea:
.]{: c.Z * 14
din ca r erezultd
Z=X 'ts.
urlo,rl Potrivitacesteirelafii,lp"nt* ,.ooui pru"ti"" estersuficient
s6se
cunoasclrepartifiavariabileiZ, saua func{ieiLaplace.Astfel,mai int6i se genereazd
valorile
variabileinormale/(0,1) gi apoi cu proprietatea
de mai sus se oblin numere aleatoare
reoartizateN(,p,o)Avdnd in vedereaspectelepractice,reparti{ianormali poate fi consideratdcea rnai
importantddintrereparti{ii le neuniforme.
????2????????????
DUPA CE ALG????
/
voidnormQ
t
{
int n,k;
'/
doubleale,auxl,aux?;
float u,med,disp;
print('\nCENERAREANUMERELORA LEATOARECU REPARTITIE N ORMALA") ;
print("\n");
print('\Dati media:");
scan("7of',&med);
print('\n Dati dispersia
:");
scanf("o/of',&disp);
print('lnDati numarulde simulari:");
24
scan("Yod",&n);
print("\n U generat Normala");
print("\n");
for(k:l;k<:n;k#)
{
do u{float)(randQ% 100)i100.;
while (u:0.5);print("Vr % I 0.5f',u);
auxl:u-O.5;
ale:auxl/fabs(auxl);
ale*=disp;
auxI :fabs((double)(l -2* u));
auxl=log(auxl);
auxl*:-2:
auxl:sqrt(auxl);
1,2.);
aux2:2.5| 555l7*0.802853*auxI +0.0I 0328*pow(aux
auxZ| : | + 1.432788*auxI +0.I 89269* pow(aux1,2.)+0.00
I 308* pow(auxl, 3.);
ale*:(auxI -aux2);
ale+=ned;
printf(" Yol0.5f', (floatXale));
)
getch0;
clrscr0;
)
Schemalogic[ pentrugenerarea
numereloraleatoareOupere]]rtilia normal5N(m, o) este
reprezentat[?nfigura 7.
??2???????????2??
25
ri
)
rii
[O Dentrux<0
f( x ) = 1^
l l -e -2 '',x>o '
iarfunc{iaderepartifie
exponen{ial
negativiareforma:
E(X
2,11\
ir- 'r I
)=j * D'(x)=+.
x* =-*.tn (t-y*).
i
- -----l-'
A
27
void expon()
J
CU
REPARTITIE
I
I
28
f' ,)