L'unico algoritmo funzionante che sono riuscito a produrre è questo:

codice:
import java.util.Random;

public class Prova
{
    public static void main(String[] args)
    {
        Random generator = new Random();
        
        int[] data = new int[10];
        
        for (int n = 0; n < data.length; n++) 
        {   
            int randomNumber = 1 + generator.nextInt(10);
            while (randomNumber == data[0] || randomNumber == data[1] ||
                   randomNumber == data[2] || randomNumber == data[3] ||
                   randomNumber == data[4] || randomNumber == data[5] ||
                   randomNumber == data[6] || randomNumber == data[7] ||
                   randomNumber == data[8] || randomNumber == data[9])
            {
                randomNumber = 1 + generator.nextInt(10);
            }
            data[n] = randomNumber;
        }
        
        for (int e : data)
        {
            System.out.print(e + " ");
        }
    }
}
Ma sono sicuro esista un algoritmo più efficiente, sarebbe impensabile applicare questo codice ad array di lunghezza 100 o 1000!