DirichletState<Vector> state;
@Override
public void map(WritableComparable<?> key, Text values,
OutputCollector<Text, Text> output, Reporter reporter) throws IOException {
Vector v = DenseVector.decodeFormat(values.toString());
// compute a normalized vector of probabilities that v is described by each model
Vector pi = normalizedProbabilities(state, v);
// then pick one model by sampling a Multinomial distribution based upon them
// see: http://en.wikipedia.org/wiki/Multinomial_distribution
int k = UncommonDistributions.rMultinom(pi);
output.collect(new Text(String.valueOf(k)), values);
}