Io penso che il tuo problema sia già posto male in origine.

Se devi generare 40 numeri casulai compresi tra 0 e 39 (ovvero un intervallo di 40 numeri) senza ripetizioni non avrai altro che tutti i numeri da 0 a 39 però in ordine sparso.

Quindi secondo me potresti usare una delle seguenti strade:
1) riempire un vettore con i numeri da 0 e 39 e poi mischiarli (con criterio)
2) generare i numeri in sequenza (da 0 a 39) e posizionarli casualmente nel vettore (senza riscrivere posizioni già scelte)
3) creare un vettore vuoto, generare numeri casuali, verificare che il numero non è stato già generato ed inserirli in sequenza nel vettore (quello che stai cercando di fare tu)

ad ogni modo la generazione di numeri casuali prevere:
1) l'istanziamento di un Random
2) la specifica di un seme
3) la richiesta del prossimo intero casuale

quindi:
codice:
Random generator = new Random(1000);
generator.setSeed(System.currentTimeMillis());

for ( int i=0; i < 40; i++ ) {
   generator.nextInt();
}