Fisher-Yates 알고리즘을 사용하여 C#에서 카드 섞기
이 프로그래밍 작업에서 우리는 카드 한 벌을 최대한 많이 섞는 것을 목표로 합니다. 사용자가 원하는. 여기에는 System.Random 클래스를 활용하여 임의의 정수를 생성하고 Fisher-Yates 셔플 알고리즘을 구현하는 메서드를 만드는 작업이 포함됩니다.
기존 프로그램 구조:
제공된 코드 Program.cs, Deck.cs, Enums.cs 및 Card.cs를 포함한 여러 클래스로 구성됩니다. 이러한 클래스는 카드 게임의 구조를 정의합니다.
카드 섞기 알고리즘:
Fisher-Yates 섞기로 알려진 잘 알려진 섞기 알고리즘을 구현하려면 다음을 수행합니다. FisherYates라는 새로운 정적 클래스를 추가합니다. 이 클래스에는 다음 메소드가 포함되어 있습니다.
static public void Shuffle(int[] deck) { for (int n = deck.Length - 1; n > 0; --n) { int k = r.Next(n+1); int temp = deck[n]; deck[n] = deck[k]; deck[k] = temp; } }
이 메소드에서는 0~n 범위 내에서 임의의 인덱스 k를 생성하고 인덱스 n과 k의 요소를 교환합니다. 이 프로세스는 데크의 각 요소에 대해 반복되어 요소를 효과적으로 섞습니다.
코드에 통합:
셔플 방법을 코드에 통합하려면 다음을 수행하세요. 다음 단계를 사용하십시오.
int[] deck_ints = new int[52]; for (int i = 0; i < deck_ints.Length; i++) { deck_ints[i] = i; } int num_shuffles = int.Parse(Console.ReadLine());
FisherYates.Shuffle(deck_ints);
이 단계를 따르면 카드 덱을 효과적으로 섞을 수 있습니다. 지정한 횟수만큼 셔플된 데크를 원하는 대로 표시합니다.
위 내용은 C#에서 카드 덱을 섞는 Fisher-Yates 섞기 알고리즘을 어떻게 구현할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!