반응형 랜덤2 C# Fisher-Yates Shuffle 알고리즘 오리지널 Fisher-Yates Shuffle 알고리즘 길이가 n인 배열을 생성한다. [0, n - 1] 범위의 무작위 인덱스를 뽑아서 새로운 배열에 추가한다. 기존 배열의 n - 1 위치의 원소를 무작위로 뽑혀 나간 위치에 추가한다. (한 칸씩 당겨서 해당 빈칸을 채우는 방법도 있지만 그때는 length - n개만큼 움직여야 해서 비효율적이다.) 다음으로 [0, n - 2] 범위의 무작위 인덱스를 뽑아서 새로운 배열에 추가한다. 기존 배열의 n - 2 위치의 원소를 무작위로 뽑혀 나간 위치에 추가한다. 해당 과정을 반복한다. 예제 코드 public partial class Program { private static Random random = new Random(); static void Main(s.. 2024. 4. 12. C# list 랜덤(random) 하게 섞기 C#에서 Linq로 랜덤 하게 섞기 list의 요소들을 랜덤 하게 섞고 싶을 때 Linq OrderBy()에서 random 객체의 Next()를 호출하면 간단하게 해당 요소들을 섞을 수 있다. using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { var list = new List() { 1, 2, 3, 4, 5 }; var random = new Random(); var randomized = list.OrderBy(x => random.Next()); foreach (var i in randomized) { Console.WriteLine(i); .. 2024. 3. 21. 이전 1 다음