Numeros randomicos

alguem pode me dizer o que esta dando errado nesse codigo
eu não posso repetir os numeros mas ele não esta lendo os 8 numeros

for(int x = 0; x < 8; x++){ a=(int)(Math.random()*8); for(int n=0; n<8; n++){ if(vetor[n] == a){ achou = true; } } if (achou == false){ vetor[x] = a; System.out.println("t "+a); } achou = false; }

tenta assim…

[code] int a;
int x = 0;
int n = 0;
int[] vetor = new int[8];
boolean achou = false;

    while( x < 8) {
        a = (int) (Math.random() * 8);
        
        while (n < x) {
            if (vetor[n] == a) {
                achou = true;
            }
            n++;
        }
        n = 0;
        
        if (achou == false) {
            vetor[x] = a;
            x++;
            System.out.println("t " + a);
        }
        achou = false;
    }[/code]

mas por que no meu jeito não deu certo?

Pq ele vai passar so 8x no for… ai tipo se ele acha 2 numeros repetidos seu vetor vai ter so 6 numeros
desse jeito ele so vai sair do laço while quando o vetor tiver 8 numeros…

Achei este outro codigo, por WendersonLP:
http://www.guj.com.br/posts/list/147358.java#794879

[code]Random rand = new Random();
ArrayList list = new ArrayList();
int quantidadeDeNumeros = 10;

  for (int i = 0; i < quantidadeDeNumeros;i++) {
       int numeroAuxiliar = rand.nextInt(10); 

       // enquanto o número contiver na lista é lido outro número
       while (list.contains(numeroAuxiliar)) {
             numeroAuxiliar = rand.nextInt(10); 
       }
       list.add(numeroAuxiliar);
  }
  System.out.println(list);
}[/code]