Alguém conhece outra maneira de números sorteados sem ser usando Math.Random(); ?
esse método repete muito os números.
Collections.shuffle(suaLista);
Vlw ^^
Qualquer gerador de números aleatórios que se preze tem de repetir alguns números, a menos que você vá anotando os números que saíram e tirá-los do sorteio.
Qualquer aluno do primeiro ano de estatística irá lhe dizer isso.
OK?
Para lhe provar isso, pense em um jogo de dados.
A menos que você ponha um “chumbinho” em uma das faces do dado (dado viciado), ele será completamente aleatório, mas você sabe que os números vão se repetir - o dado não tem uma “memória” indicando que tal número já saiu.
Isso de ter possibilidade de sair números iguais eu sei … mas repete muito.
tipo … sorteia 4 vezes 2 geralmente saem iguais … kkkkkk
Já fiz alguns trabalhos acadêmicos que exigiam o uso de números aleatórios ( Algotítmos Genéticos, Simulador de Filas, Cadeia de Markov…) e sempre usei o Ramdom sem problemas!
Inclusive conseguindo ‘corresponder’ os resultados teóricos.
Acho que vale a pena reconsiderar o uso da classe.
Dê uma olhada:
http://download.oracle.com/javase/7/docs/api/java/util/Random.html
… FIM DE TóPICO
O jeito “errado” de usar Random é usar uma nova instância a cada vez, algo como:
for (int i = 1; i < 100; ++i) {
System.out.println (new Random().nextInt());
}
Nesse caso, os números vão se repetir mesmo, porque new Random() pega o horário atual da máquina (em milissegundos) e o usa como semente de números aleatórios.
Se for uma quantidade pequena de números, o horário não vai mudar (porque o Windows não tem precisão boa para o horário - ele só tem precisão de alguns centésimos de segundos) e então a semente será a mesma. O resultado é que os números vão se repetir mesmo.
Use algo como:
Random r = new Random();
for (int i = 1; i < 100; ++i) {
System.out.println (r.nextInt());
}
Existe outra forma, inclusive mais recomendada. É usando a classe Random, como o daveiga indicou:
Random random = new Random();
int valor = random.nextInt(6)+1; //Sorteia um valor entre 0 e 5 e soma 1.
double gauss = random.nextGaussian(); //Sorteia um valor dentro de uma gaussiana
Só tome cuidado para não cometer alguns erros básicos, como criar o Random dentro de um for.
O ideal é criar o random apenas uma vez (normalmente numa variável estática) , e usa-lo sempre.
Bem, eis que me surgiu uma dúvida a respeito da classe Random.
Quero fazer algo com que cada JLabels (que são 5, vão de ‘A’ a ‘E’) , em uma lista de 0 a 9 , armazenem 2 números cada da minha classe random e toda vez que ele for reaberto, os numeros sejam embaralhados novamente (isso a casse faz por si só, mas tô colocando pra complementar).
Ficaria mais ou menos assim.

Certo, e qual é a dúvida?
Esqueci de postar a pergunta Desculpas.
Bem, a duvida é: Como eu faco a classe random “distribuir” 02 numeros de 0 á 9 sem haver repetição de numero entre as JLabel?
Nesse caso, é melhor pegar uma lista ordenada de números, embaralhar e atribuí-los de 2 em 2:
List<Integer> numeros = Arrays.asList(0,1,2,3,4,5,6,7,8,9);
Collections.shuffle(numeros);
Depois de embaralhada, basta pegar os números de 2 em 2.
lblA.setText("A -> " + numeros.get(0) + " ou " + numeros.get(1));
lblB.setText("B -> " + numeros.get(2) + " ou " + numeros.get(3));
Obrigado Vinicius, deu certo, da forma que eu tava pensando, tava sendo complexo e ainda não tava se comportando corretamente.