% genera M-messaggi da una sorgente DMS con dmp p
function [a] = DMS(M,p,A)
	if nargin < 3
		error('syntax: [a] = DMS(M{>=1}, dmp, Alphabet)');
	end
	
	% alloca il vettore da ritornare
	a = zeros(1,M);
	
	for m = 1:M
		% genera una variabile U(0,1)
		x = rand;
		
		% trova l'intervallo sum(p(1:i-1))+[0,p(i)]
		% in cui cade il valore x
		i = 1;
		s = p(1);
		while x > s
			i = i + 1;
			s = s + p(i);
		end
		
		% assegna l'i-esimo elemento dell'alfabeto 
		% all'm-esimo elemento in output
		a(m) = A(i);
	end
end
