List Shuffling

This is just a simple extension for lists to enable the shuffling of items within it based on the StackOverflow answer here. This relies on System.Random so isn’t as random as it could be but is fine for my purposes.


public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> source, Random rng)
{
	T[] elements = source.ToArray();
	for (int i = elements.Length - 1; i >= 0; i--)
	{
		int swapIndex = rng.Next(i + 1);
		yield return elements[swapIndex];
		elements[swapIndex] = elements[i];
	}
}

Leave a Reply

Your email address will not be published. Required fields are marked *