The Fisher-Yates Shuffle
public static class Utility
{
public static T[] ShuffleArray<T>(T[] array, int seed) {
System.Random prng = new System.Random(seed);
for (int i = 0; i < array.Length - 1; i++) {
int randomIndex = prng.Next(i, array.Length);
T tempItem = array[randomIndex];
array[randomIndex] = array[i];
array[i] = tempItem;
}
return array;
}
}
유명한 셔플 알고리즘입니다. 배열을 중복 없이 랜덤하게 섞은 후 리턴합니다. *prng는 램던넘버생성기의 약자입니다.