반응형
리스트 랜덤 섞기
리스트를 랜덤으로 섞을 때, 사용하는 확장 함수입니다. 원리는 랜덤으로 생성되는 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}
}
마무리
간단하게 셔플이 필요한 경우 해당 확장 함수를 이용하면 편리하게 이용할 수 있습니다. :)
반응형
'Utils' 카테고리의 다른 글
C#, 고정된 해쉬 값 가져오기 (0) | 2023.03.18 |
---|---|
Unity, 현재 입력된 KeyCode 가져오기 (0) | 2022.12.28 |
C#, 중복되지 않게 랜덤 숫자 생성 (0) | 2022.08.22 |
C#, 데이터 리스트를 CSV파일로 생성하기 (0) | 2022.07.23 |
C# Windowform, 유니티처럼 코루틴 만들어서 사용하기 (2) | 2022.07.17 |
댓글