본문 바로가기
Utils

C#, List 랜덤으로 섞기 확장함수 (Shuffle)

by Client. DJ 2022. 10. 24.
반응형

랜덤으로 리스트를 섞었다. (Shuffle)

리스트 랜덤 섞기

리스트를 랜덤으로 섞을 때, 사용하는 확장 함수입니다. 원리는 랜덤으로 생성되는 GUID를 기준으로 Linq를 통해 다시 정렬하는 방식입니다.

스크립트

public static class Utils
{
    /// <summary>
    /// 리스트 랜덤으로 섞기
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="list"></param>
    public static void Shuffle<T>(this List<T> list)
    {
        var temp = list.OrderBy(item => Guid.NewGuid()).ToList();
        list.Clear();
        list.AddRange(temp);
    }
}

예제

private static void Main(params string[] args)
{
    List<int> list = new List<int>() { 0, 1, 2, 3, 4 };
    // list = {0, 1, 2, 3, 4}
    
    list.Shuffle();
    // Results is Random
    // ex) list = {1, 3, 0, 2, 4}
}

마무리

간단하게 셔플이 필요한 경우 해당 확장 함수를 이용하면 편리하게 이용할 수 있습니다. :)

반응형

댓글