Fisher–Yates Shuffle of SPListCollection in C#

I like working with c# when not with PHP as it helps me learn deeper ways to do things. Also it constantly makes me grateful for PHP where the following is as easy as shuffle($numbers); in PHP.

C#

public static int[] shuffle(int[] array)
{
Random rng = new Random();  // System.Random
// n is the number of items remaining to be shuffled.
for (int n = array.Length; n > 1; n--)
{
// Pick a random element to swap with the nth element.
int k = rng.Next(n);  // 0 <= k <= n-1 (0-based array)
// Swap array elements.
int tmp = array[k];
array[k] = array[n - 1];
array[n - 1] = tmp;
}
return array;
}