function [ x, comp ] = dirichlet_mix_sample ( comp_num, elem_num, a, ...
  comp_weight )

%*****************************************************************************80
%
%% dirichlet_mix_sample() samples a Dirichlet mixture PDF.
%
%  Licensing:
%
%    This code is distributed under the MIT license.
%
%  Modified:
%
%    08 October 2004
%
%  Author:
%
%    John Burkardt
%
%  Input:
%
%    integer COMP_NUM, the number of components in the Dirichlet
%    mixture density, that is, the number of distinct Dirichlet PDF's
%    that are mixed together.
%
%    integer ELEM_NUM, the number of elements of an observation.
%
%    real A(ELEM_NUM,COMP_NUM), the probabilities for
%    element ELEM_NUM in component COMP_NUM.
%    Each A(I,J) should be positive.
%
%    real COMP_WEIGHT(COMP_NUM), the mixture weights of the densities.
%    These do not need to be normalized.  The weight of a given component is
%    the relative probability that that component will be used to generate
%    the sample.
%
%  Output:
%
%    real X(ELEM_NUM), a sample of the PDF.
%
%    integer COMP, the index of the component of the Dirichlet
%    mixture that was chosen to generate the sample.
%

%
%  Choose a particular density component COMP.
%
  comp = discrete_sample ( comp_num, comp_weight );
%
%  Sample the density number COMP.
%
  x = dirichlet_sample ( elem_num, a(1:elem_num,comp) );

  return
end
