A classe
java.util.Random
pode gerar números pseudo-aleatórios com uma distribuição razoavelmente uniforme. Dada uma Lista
do seu tipo de serviço:List<String> services = new ArrayList<String>(
Arrays.asList("COMPUTER", "DATA", "PRINTER"));
é fácil selecionar um ao acaso:
String s = services.get(rnd.nextInt(services.size()));
Da mesma forma, um de uma lista de valores de feedback pode ser escolhido:
List<String> feedbacks = new ArrayList<String>(
Arrays.asList("1", "0", "-1"));
String s = feedbacks.get(rnd.nextInt(feedbacks.size()));
Um expediente simples para obter uma distribuição diferente é "empilhar o baralho". Por exemplo,
Arrays.asList("1", "1", "1", "0", "0", "-1"));
produziria 1, 0 e -1 com probabilidade /2 , /3 , e /6 , respectivamente. Você pode organizar partições mais elaboradas usando
nextGaussian()
e um intervalo de confiança
adequado . Essa abordagem deve ser usada apenas para gerar dados de teste.
Adendo:O Apache Commons Math Guide inclui um capítulo sobre Geração de dados , com links informativos e documentação sobre outras distribuições de probabilidade.