A solenidade da Ascensão de Jesus Cristo transmite-nos a confiança de que não ficamos sozinhos na missão de anunciar Cristo Ressuscitado e de O testemunhar nos ambientes próprios do nosso quotidiano: família, trabalho, escola, campo, cidade, lazer... Sentindo-nos abençoados pela Sua presença em nós, como membros vivos do Seu corpo, não ficamos alheados da realidade, mas somos chamados a viver a missão de cultivar um olhar renovado, nas palavras, nos gestos, nas atitudes e nas relações. Por isso, apresentamos, para esta semana, a palavra BÊNÇÃO e acendemos, após a admonição final, uma pequena vela a partir do Círio Pascal, que ficará, juntamente com dois pés, na proximidade da palavra, à volta do coração..

Só queria saber se você pode confirmar que o código a seguir é válido e avisa se há alternativas melhores para ele?
Looping através da lista para verificar cada valor não é muito eficiente. Você pode colocar os valores em um HashSet para acelerar o ckeck.
Não que isso importe muito se você precisar apenas de 300 números, mas seria mais eficiente usar o HashSet que faz o (1) lookups em vez de o (n) como na List.
Reutilize o homem. Uma vez que você quer fazer é uma coleção de números (Enumerable.Range vai fazer), a segunda coisa é embaralhar (aleatoriamente) esses números. Você pode encontrar resposta para este problema no SO, e graças a solução LINQ é lindo, mas talvez não seja o mais rápido, de qualquer maneira eu uso, porque eu gosto da beleza dele.
Isso fará o que você quiser, exceto que jogar um número porque você o viu antes reduz a entropia (aleatoriedade) da sequência.
Nesses casos, sempre acho que você não precisa de números randoms . Em vez disso, você vai mais embaralhar alguns números existentes.
Então, que tal pegar o range que você gosta com algo como var range = Enumerable.Range(1, 100000) , embaralhe-os e pegue o número de elementos que você precisa, por algo como range.ToArray().Shuffle().Take(300) ?
Uma implementação de um algoritmo random pode ser encontrada aqui . Eu sei que não é um método de extensão, que pode ser usado da maneira descrita acima, mas alterar a assinatura é muito fácil.