Como fazer este código funcionar sem repetir os números? [duplicado]

Esta questão já tem uma resposta aqui:

Randomize uma lista <T> 18 respostas

Eu preciso imprimir números de 1 a 50 em ordem aleatória, sem repeti-lo.

static void Main(string[] args)
{
     ArrayList r = new ArrayList();

     Random ran = new Random();      
     for (int i = 0; i < 50; i++)
     {
        r.Add(ran.Next(1,51));

     }

     for (int i = 0; i < 50; i++)
        Console.WriteLine(r[i]);
     Console.ReadKey();
}

questionAnswers(3)

yourAnswerToTheQuestion