Obter X números exclusivos de um conjunto

Qual é a maneira mais elegante de obter números aleatórios únicos que eu pondero?

No momento, preciso de números únicos aleatórios, verifico se não é exclusivo usando um loop while para ver se já usei o número aleatório antes.

Então parece:

int n = getRandomNumber % [Array Size];

for each ( Previously used n in list)
    Check if I've used n before, if I have...try again.

Existem muitas maneiras de resolver esse problema O (n / 2) linear, apenas me pergunto se existe uma maneira elegante de resolvê-lo. Tentando recordar a matemática discreta e lembrar se o antigo professor abordou algo relacionado a um problema aparentemente trivial.

Não consigo pensar no momento, então, talvez, depois de tomar alguma cafeína, meu cérebro a absorva com o QI elevado induzido pelo café.

questionAnswers(4)

yourAnswerToTheQuestion