Simplest solution:
private Random shuffle = new Random();
public void Randomise<T>(List<T> input)
{
int capacity = input.Count;
if (capacity> 1)
{
for (int i = 0; i < capacity * 3; i++)
{
int r1 = shuffle.Next(capacity);
int r2 = shuffle.Next(capacity);
T temp = input[r1];
input[r1] = input[r2];
input[r2] = temp;
}
}
}