%======================================================
% Campionamento da una variabile aleatoria discreta
%======================================================
%
% Y=discreta(x,p,n)
% x: vettore dei valori possibili x = [1/5 1/4 1/3 1/2 1]
% p: probabilita’ associate ai valori in x p = [0.1 0.4 0.05 0.25 0.2]
% n: numero di valori casuali da generare
% 
% x=[1/5, 1/4, 1/3, 1/2, 1];
% p=[.1, .4, .05, .25, .2];
% n=1000;
% Y = discreta(x,p,n);
% media_es = x*p'   % media esatta
% media_c = mean(Y) % media campionaria
% var_es = x.^2*p' - media_es^2 % varianza esatta
% var_c = var(Y) % varianza campionaria
% figure(1); N=hist(Y,x); bar(x,N/n); %istogramma
% figure(2); cdfplot(Y); % distribuzione empirica
% 
% Si vede che i valori campionari sono molto simili a quelli esatti. L’istogramma e la funzione
% di ripartizione cumulativa sono mostrati in figura 2
%
function Y=discreta(x,p,n)
	Y = zeros(1,n);
	F = cumsum(p);
	U = rand(1,n);
	for i=1:n
		j=1;
		while U(i)>F(j)
			j=j+1;
		end
		Y(i)=x(j);
	end
	return


% function Y=discreta(x,p,n)
% 	U=rand(1,n);
% 	[N,Z]=histc(U,[-inf,cumsum(p)]);
% 	Y=x(Z);
% 	return