![]() | Biologie | Chimie | Didactica | Fizica | Geografie | Informatica |
Istorie | Literatura | Matematica | Psihologie |
UNIVERSITATEA TEHNICA DE CONSTRUCTII BUCURESTI
FACULTATEA:HIDROTEHNICA
SPECIALIZAREA:AUTOMATICA SI INFORMATICA APLICATA
MODELARE SI SIMULARE
LUCRAREA NR.2
METODE DE GENERARE A
VARIABILELOR ALEATOARE
I.Metoda inversa
Enunt
Daca X,F inversabila
Algoritm:
Pasul 1: Intializare algoritmul pentru generarea uniforma pe (0,1) si a algoritmului pentru calcu;lul lui F-1
Pasul 2: Genereaza U
Pasul 3: -Calculeaza
-Returneaza X
1.Metoda exponentiala
Enunt
xdaca are f(x)=
F(x)=
x=ln V
Daca UU(0,1)
1-U
U(0,1)
Algoritm:
Pasul 1: Intrare λ
Pasul 2: Genereaza UU(0,1)
Pasul 3: x=-
Program:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include<conio.h>
#include<iostream.h>
void main()
getch();
2.Metoda Gumbel
Enunt
Metoda este folosita in stabilirea extremelor interferand variabile aleatoare ale caror functii de repatitie sunt de forma :
F(x)= pentru maxime x
F(x)=;x>0,v,k>0,pentru maxime
F(x)=
Cu schimbare de variabila y=α(x-u)F(x)=
Pentru (1) F(y)=u ln
sau
ln
(x-u)=-ln(-lnU)x-u=-
variabila aleatoare de tip Gumbel
Pentru (2) Cu schimbarea de variabila y=kln
dublu exponentiala (5) x=ve
Fr(v,k) cu y dat de relatia anterioara y=kln
(5)
F(y)= Dublu expinetiala
Algoritm:
Pasul 1: Intrare α,u
Pasul 2: Genereaza uU(0,1)
Pasul 3: x=u-
Program:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include<iostream.h>
void main()
getch();
II.Metoda compunerii
1.Metoda discreta
Enunt:
F(x)=
0 Gi sunt functii de repartitie
Algoritm:
Pasul 1: - Intrare p1,pk
- Initializarea algoritmilor RND,
care genereaza variabilele aleatoare cu repartitia Gi pt i= calculam functia de repartitia
Pasul 2: repeta
j=0;
genereaza UU(0,1)
repeta
j=j+1;
pana cand Fj<U
X:
u
genereaza zGj(z)
x=z
Pasul 3: STOP!
Program:
#include<iostream.h>
#include<math.h>
#include<time.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void main()
while(f[j]<u);
g=p[i];
z=(rand()%100)/99;
if(z=p[j]);
x=z;
} }
getch();
}
2.Metoda continua.Pearson XI
Enunt:
Daca Yg(y),
y
, iar X
unde y este o realizare a lui Y atunci densitarea de reparytitie
a lui x este:f(x)=
In termenii de functie de repartitie
Fie y Consideram o variabila X
XλExp(λ)
Amestecul celor 2
legi de repartitie este x
Person de tip XI
F(x)=1-
Algoritm:
Pasul 1: Initializarea algoritmilor RND, care
genereaza variabilele aleatoare YG(y)
Pasul 2: repeta
genereza YG(y)
genereaza X H(x,y)
X= X
pana cand conditie oprire
Pasul 3: STOP!
Pearson:
Pasul 1: Initializarea algoritmilor RND, intrare μ
Pasul 2: repeta
genereza UU(0,1)
λ=
genereaza UU(0,1)
X=
pana cand conditie oprire
Pasul 3: STOP!
Program:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include<conio.h>
#include<iostream.h>
void main()
getch();
}
III.Metoda respingerii
Algoritm:
Pasul 1: Initializarea algoritmilor RND, care genereaza variabilele aleatoare Si,verifica proprietatea P si calculeaza functia Ψ
Pasul 2: repeta
repeta
genereza n, variabile aleatore de tip N
pentru i= genereaza Si
pana cand P(S1,S2, . ,Sn)
X=Ψ(S1,S2, . Sn)
pana cand conditie oprire
Pasul 3: STOP!
1.Lema
Enunt:
X si y
si P(y) f(y)=0
Presupunem ca α>0 astfel incat sa avem relatia
si spunem ca y poate
fi generat cu calculatorul atunci daca
si indepentent de y
densitatea de repartitie a lui Y conditionata de
este f(x) adica Y este
o realizare a lui X
S=
N=2
P:
(Y,U)=Y
Algoritm:
Pasul 1: Initializarea algoritmilor RND, Y;Intrare α
Pasul 2: repeta
repeta
genereza UU(0,1)
genereza Yh(y)
pana cand
retine X=Y
pana cand conditie oprire
Pasul 3: STOP!
Program:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include<iostream.h>
void main()
getch();
}
2.Metoda infasuratoarei
Enunt:
YExp(1) λ=1
(exponentiala standard)
h(x)=e-x
h(x)=
Am determinat
x |
1 |
r` |
+ - |
r |
↑ │ ↓ |
Algoritm:
Pasul 1: Initializarea algoritmilor RND
Pasul 2: repeta
repeta
genereza UU(0,1)
genereza Y=-lnU
genereza UU(0,1)
pana cand
retine X=Y
pana cand conditie oprire
Pasul 3: STOP!
Program:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include<conio.h>
#include<iostream.h>
void main()
getch();
IV.METODE PARTICULARE
1.Metoda Box-Muller
Enunt:
Daca u1
si u2U(0,1) independente atunci Zi=vi
, unde vi=2u1-1
In S=v12+v22<1
Mes v1,v2U(-1,1),
Introducem
variabila aleatoare (0,1) (Zi
(0,1)) independente i=1,2
Algoritm:
Pasul 1: Initializarea algoritmilor RND,n
Pasul 2: pentru i= executa
genereza U1U(0,1)
genereza U2U(0,1)
S=v12+v22
cat timp S<1
v1=2*U1-1;
v2=2*U2-1;
z1=v1
z2=v2
genereza U1U(0,1)
v1=2*U1-1;
genereza U2U(0,1)
v2=2*U2-1;
S=v12+v22
genereaza z1,z2
Pasul 3: STOP!
Program:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include<conio.h>
#include<iostream.h>
void main()
}
getch();
2.Metoda
Enunt:
χν2= cu zi
(0,1) independente
Densitatea de probabilitate χn2
F(x)=,X>0
Algoritm:
Pasul 1: Initializarea algoritmilor RND,n
Pasul 2: pentru i= executa
genereza U1U(0,1)
genereza U2U(0,1)
S=v12+v22
cat timp S<1
v1=2*U1-1;
v2=2*U2-1;
z1=v1
z2=v2
genereza U1U(0,1)
v1=2*U1-1;
genereza U2U(0,1)
v2=2*U2-1;
S=v12+v22
genereaza variabila aleatoare χ2
Pasul 3: STOP!
Program:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include<conio.h>
#include<iostream.h>
time_t t;
int i=1,n,niu;
float v1,v2,s,z1,z2,x=0;
void Box_Muller()
z1=v1*sqrt(-2*log(s)/s);
z2=v2*sqrt(-2*log(s)/s);
void main()
if(niu%2!=0)
cout<<x<<' ';
}
getch();
}
3.Metoda Student
Enunt:
Variabila aleatoare Student cu grade de libertate este definite de relatia
tν=,unde z
(0,1) si χ2ν sunt
independente
Algoritm:
Pasul 1: Initializarea algoritmilor RND,n
Pasul 2: Pentru i= executa
genereza z(0,1)
genereza cu HIP
t
Pasul 3: STOP!
Program:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include<conio.h>
#include<iostream.h>
time_t t;
int i=1,n,niu;
float v1,v2,s,z1,z2,X=0,T,z;
void Box_Muller()
z1=v1*sqrt(-2*log(s)/s);
z2=v2*sqrt(-2*log(s)/s);
void hi2()
if(niu%2!=0)
}
void main()
getch();
4.Metoda Fisher
Enunt:
unde
sunt independente
Algoritm:
Pasul 1: Initializarea algoritmilor RND,Intrare ν1 si ν2, n
Pasul 2: Pentru i= executa
genereza cu HIP
F=
Pasul 3: STOP!
Program:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include<conio.h>
#include<iostream.h>
time_t t;
int i=1,n,niu1,niu2,l;
float v1,v2,s,z1,z2,X=0,F,z,x1,x2;
void Box_Muller()
z1=v1*sqrt(-2*log(s)/s);
z2=v2*sqrt(-2*log(s)/s);}
void hi2(int n, int niu)
if(niu%2!=0)
void main()
getch();
5.Metoda Geometrica
Enunt:
Metoda inversa:
F(x)=U V=1-U si V
v=qx-1
(x-1)ln q =lnV
(x+1)=
0
0
qx+1=1-F(x)│:q
qx=
Algoritm:
Pasul 1: Initializarea algoritmilor RND,Intrare q, n
Pasul 2: Pentru i= executa
Genereza genereza UU(0,1)
Pasul 3: STOP!
Program:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include<conio.h>
#include<iostream.h>
void main()
getch();
6.Metoda Poisson
Enunt:
Pi=P(X=i)=i=0,1,2,3,.
M[x]=λ; var[x]=λ;
Variabila aleatoare Poisson de parametru λ reprezinta numarul de evenimente rare (intrarile intr-un sistem de asteptare pe unitatea de timp)
Intervalal de timp dintre 2 sosiri consecutive este o variabila de tip exponential de x
Pentru generarea lui x generam intervalele de timp τ=intervalele de timp Exp(λ) asfel incat suma lor sa acopere intervalul de timp egal cu unitatea. Numarul j de astfel de intervale este sectiune a variabilei aleatoare de timp Poisson.
j satisface inegalitatea dubla:
astfel il gasim pe j
ui
u(0,1)
Algoritm:
Pasul 1: Initializarea algoritmilor RND,Intrare λ,n
Pasul 2: Pentru i= executa
j=-1;P=1
repeta
genereza UU(0,1)
P=P*u;
j=j+1;
pana cand P<e-λ
retine x=j
Pasul 3: STOP!
Program:
#include<iostream.h>
#include<math.h>
#include<time.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void main()
}
getch();
Copyright © 2025 - Toate drepturile rezervate