function rdir=rdirichlet(n,alpha);
  %RDIRICHLET renvoie une réalisation de la loi de Dirichlet de taille n
  %et de paramètre alpha. C'est la loi du vecteur aléatoire
  % (x_1/(x1+...+xn), ... , x_n/(x1+...+xn)) lorsque les xi sont i.i.d. 
  %et suivent des lois gamma de paramètre respectifs (alpha(i),1).
  %Ainsi, lorsque alpha=(1,...,1), on obtient la loi uniforme sur le 
  %simplexe des lois de probabilités discrètes sur {1,...,n}.
  %Le paramètre alpha doit être un vecteur de taille n à coordonnées 
  %strictement positives. Il est optionnel est vaut par
  %défaut (1,...,1). La valeur de retour rdir est un vecteur ligne.
  %Les appels successifs donnent des réalisations pseudo-i.i.d. puisque
  %rdirichlet fait appel à rgamma pour simuler la loi gamma et à
  %rexpweib(.,1,1) si alpha est omis.
  %rdir=rdirichlet(n);
  if (nargin==1),
	% Loi expo, on peut aussi utiliser gamma(n,1)
	x=rexpweib(n,1,1);
	rdir=reshape(x/sum(x),[1,n]);
  else
	if (length(alpha)==~n), error('alpha doit etre de dim n'); end;
	if ~(all(alpha>0)), error('alpha doit etre a coords >0'); end;
	for i=1:n,
	  x(i)=rgamma(1,alpha(i));
	end
	rdir=reshape(x/sum(x),[1,n]);
  end
  return;

