function [v,abscet,relcet,p, tabulka1, tabulka2]=Poisson(CPS,lambda,t)
%funkce pro simulaci Poissonova procesu
%syntaxe:[v,abscet,relcet,p, tabulka1, tabulka2]=Poisson(CPS,lambda,t)
%vstupni parametry
%CPS ... celkovy pocet simulovanych prichodu zakazniku
%lambda ... intenzita vstupniho proudu zakazniku
%t ... casovy krok
%vystupni parametry
%v ... vektor variant poctu zakazniku
%abscet ... abs. cetnosti jednotlivych variant
%relcet ... relativni cetnosti jednotlivych variant
%p ... pravdepodobnosti jednotlivych variant
%tabulka1 ... empiricke a teoreticke charakteristiky simulovaneho poctu
%zakazniku
%tabulka2 ... empiricke a teoreticke charakteristiky doby simulace
IMP=exprnd(1/lambda,CPS,1);
%IMP ... intervaly mezi prichody zakazniku
OPZ=cumsum(IMP);
%OPZ ... okamziky prichodu zakazniku
if round(OPZ(size(OPZ,1)))<OPZ(size(OPZ,1))konecny_cas=round(OPZ(size(OPZ,1)))+1; 
    else konecny_cas=round(OPZ(size(OPZ,1)));
end
cas=0:t:konecny_cas+t;
%cas ... serazene casove okamziky s krokem t
%PZ ... pocet zakazniku
n=size(cas,2);
for i=1:n-1 
    citac=0;
    for j=1:CPS
    if (OPZ(j)>cas(i))& (OPZ(j)<=cas(i+1))citac=citac+1;end
    end
    PZ(i)=citac;
end
citac=0;
for j=1:CPS
    if (OPZ(j)>konecny_cas-t)& (OPZ(j)<=konecny_cas)citac=citac+1;end
end
PZ(n)=citac;
table=tabulate(PZ);
v=table(:,1);
abscet=table(:,2);
relcet=table(:,3)/100;
%p ... hodnoty pravdep. funkce Poiss. rozlozeni s parametrem lambda*t
p=poisspdf(v,lambda*t);
prum_pocet_zak=mean(PZ);
smer_odch_poctu_zak=std(PZ);
str_hodnota_poctu_zak=lambda*t;
teor_smer_odch_poctu_zak=sqrt(lambda*t);
tabulka1=[prum_pocet_zak str_hodnota_poctu_zak smer_odch_poctu_zak teor_smer_odch_poctu_zak];
index=1:size(v,1);
%graficke porovnani relativnich cetnosti a pravdepodobnosti
plot(index,relcet,'o', index,p,'+')
doba_simulace=sum(IMP);
teor_doba_simulace=CPS/(lambda);
prum_doba=mean(IMP);
str_hodnota_doby=1/lambda;
smer_odch_doby=std(IMP);
teor_smer_odch_doby=1/lambda;
tabulka2=[doba_simulace teor_doba_simulace prum_doba str_hodnota_doby smer_odch_doby teor_smer_odch_doby];
% graficke znazorneni prichodu zakazniku
figure
stairs(OPZ,[1:CPS])




