C#에서 카드 섞기
카드 섞기는 카드 게임에서 무작위성을 도입하는 데 중요한 측면입니다. 이 문서에서는 C#의 카드 섞기 주제를 자세히 살펴보고 사용자 입력에 따라 덱을 반복적으로 섞어야 하는 특정 시나리오를 다룹니다.
제공된 코드에서 카드 덱을 나타내는 클래스를 정의했습니다. , 개별 카드 및 다양한 열거. 카드 섞기를 통합하려면 컬렉션의 요소를 효율적으로 무작위화하는 Fisher-Yates 섞기 알고리즘을 사용하는 것이 좋습니다.
Fisher-Yates 섞기 기능을 코드에 추가하는 방법은 다음과 같습니다.
셔플링을 위한 도우미 클래스:
라는 정적 도우미 클래스를 만듭니다. FisherYates는 셔플 알고리즘을 구현합니다.
static public class FisherYates { static Random r = new Random(); 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; } } }
덱에 셔플 적용:
Program.cs 클래스에서 사용자가 원하는 셔플 수를 얻습니다. FisherYates 셔플 방법을 활용하여 데크를 셔플합니다.
int numOfShuffles = int.Parse(Console.ReadLine()); for (int i = 0; i < numOfShuffles; i++) { FisherYates.Shuffle(mydeck.Cards); }
섞은 카드 표시:
섞은 후 업데이트된 섞인 카드 덱을 표시할 수 있습니다.
foreach (Card c in mydeck.Cards) { Console.WriteLine(c); }
Fisher-Yates 셔플 알고리즘을 활용함으로써 프로그램은 이제 사용자가 지정한 만큼 카드 덱을 셔플할 수 있습니다. 결과로 섞인 덱을 표시합니다.
위 내용은 사용자 입력을 기반으로 C#에서 카드 한 벌을 여러 번 효율적으로 섞는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!