[RESOLVIDO] Como gerar Números Aleatórios sem repetição

Boa tarde, gostaria de uma ajuda, pois estou tentando gerar números aleatórios com Random() sendo que não pode haver números repetidos.

Exemplo:


int[] num = new int[6];
Random  r = new Random();

for(int i=0; i<num.length; i++){
      num[i] = r.nextInt(60) + 1; //Dentro do Array num[i] não pode haver números repetidos, então, como fazer?
}

Desde já agradeço a colaboração de todos. Valeu!

Oi JMARQ,

Da uma olhadinha aqui http://www.guj.com.br/posts/list/131545.java

Boa sorte!

Anime, grato pela ajuda, só que não explica bem o que estou pretendendo. Mesmo assim, Valeu!

O jeito mais fácil é criar um monte de números numa JList e então usar o método Collections.shuffle.

[code]List numeros = new ArrayList();
for (int i = 1; i < 61; i++) { //Sequencia da mega sena
numeros.add(i);
}

//Embaralhamos os números:
Collections.shuffle(numeros);

//Mostramos 6 aleatórios
for (int i = 0; i < 6; i++) {
System.out.println(numeros.get(i));
}[/code]

3 curtidas

ViniGodoy, muito obrigado pelo apoio meu velho, um forte abraço e até as próximas dúvidas. Valeu!!!

Proveitando a oportunidade, ViniGodoy, tem como ser feito com Random(), sendo feitas comparações para cada posição do Array para que não repita um número?

Tem sim, mas isso é pouco eficiente. Se for para fazer assim, é melhor usar um TreeSet:

[code]Set numeros = new TreeSet();

Random rand = new Random();
//Vamos sortear 20 números de 0 até 100 sem repetição
while (numeros.getSize() < 20) {
numeros.add(rand.nextInt(101));
}

System.out.println("Números gerados: " + numeros);
[/code]

2 curtidas

Obrigado pela atenção ViniGodoy, mais uma vez agradeço novamente pela ajuda.

Consegui fazer da forma que o professor pediu, segue o código:

public class NumerosAleatrorios{

    public static void main(String[] args){

        int numero;
        int[] num = new int[6];
        Random r = new Random();

        for(int i=0; i<num.length; i++){
             numero = r.nextInt(60) + 1;
             for(int j=0; j<num.length; j++){
                   if(numero == num[j] && j != i){
                         numero = r.nextInt(60) + 1;
                   }else{
                        num[i] = numero;
                   }
             }
        }
        //Apresentar na tela o resultado
        for(int i=0; i<num.length; i++){
             System.out.print(num[i]+"  ");
        }
    }
}

Valeu pessoal, até mais.

1 curtida