루프를 거치지 않으면 루프가 실행되지 않습니다.
-
13-12-2019 - |
문제
제 형편없는 문법과 철자법에 대해 죄송하다는 말씀부터 시작하겠습니다.
덱을 만들고 52장의 카드를 추가하는 MVC3 프로젝트가 있습니다.그런 다음 다음과 같은 경우에만 작동하는 셔플 기능을 추가했습니다. 나는 밟는다 shuffle 메소드의 루프.
내 클래스 Deck에서는 52개의 PlayingCard 개체를 포함하는 배열을 만듭니다.데크에는 배열을 내보기에 표시되는 목록에 복사하는 메소드가 있으며 목록을 뒤섞는 메소드도 있습니다.
설명하기 쉽지 않지만 코드는 실행만 됩니다. 한 번 내가 그것을 통과하지 않는 한.
내 Deck 모델의 셔플 방법입니다.
public void Shuffle()
{
for (int i = 0; i < 51; i++)
{
PlayingCard temp;
temp = myDeck[i];
Random rnd = new Random();
int randomNr = rnd.Next(51);
myDeck[i] = myDeck[randomNr];
myDeck[randomNr] = temp;
}
}
다음 단계를 거치지 않고 셔플 후 출력:
*4 다이아몬드1 하트 2 하트 3 하트 4 하트 6 하트 7 하트 9 하트 10 하트 11 하트 11 하트 13 스페이드 2 스페이드 3 스페이드 5 스페이드 6 스페이드 7 스페이드 8 스페이드 10 스페이드 11 스페이드 11 스페이드 12 스페이드 13 스페이드 1 클럽 2 클럽 3 클럽 4 클럽 5 클럽 6 클럽 8 클럽 8 클럽 9 클럽 10 클럽 11 클럽 12 클럽 13 클럽 1 다이아몬드 2 다이아몬드다이아몬드 12개3 다이아몬드 5 다이아몬드 6 다이아몬드 7 다이아몬드 8 다이아몬드 10 다이아몬드 11 다이아몬드 13 다이아몬드 *
15번의 단계를 거친 후 출력:
2 스페이드 3 클럽 5 스페이드 3 다이아몬드 12 다이아몬드 13 하트 11 하트 1 스페이드 6 클럽 5 다이아몬드 1 클럽 12 하트 7 클럽 13 스페이드 2 클럽 10 하트 3 스페이드 3 스페이드 6 스페이드 7 스페이드 9 스페이드 10 스페이드 11 스페이드 11 스페이드 12 스페이드 8 하트 7 하트 1 하트 2 하트 4 클럽 5 클럽 9 하트 6 하트 8 클럽 10 클럽 10 클럽 11 클럽 12 클럽 1 클럽 1 다이아몬드 2 다이아몬드 4 하트 4 다이아몬드 5 하트 6 다이아몬드 7 다이아몬드 9 다이아몬드 10 다이아몬드 10 11 다이아몬드 13 다이아몬드
전체 루프를 단계별로 실행한 후 출력:
10 하트 6 클럽 8 하트 5 하트 5 클럽 7 다이아몬드 5 스페이드 11 다이아몬드 12 스페이드 12 클럽 8 다이아몬드 5 다이아몬드 9 스페이드 10 다이아몬드 12 하트 8 스페이드 13 클럽 6 하트 1 스페이드 11 스페이드 1 하트 12 다이아몬드 4 클럽 3 클럽 8 클럽 9 다이아몬드 7 7 클럽 2 클럽 3 다이아몬드 1 다이아몬드 7 스페이드 10 스페이드 2 하트 6 스페이드 4 스페이드 2 스페이드 2 스페이드 6 다이아몬드 4 하트 2 다이아몬드 4 다이아몬드 11 클럽 11 하트 3 하트 10 클럽 10 클럽 13 하트 13 하트 9 하트 13 다이아몬드
표시된 대로 루프는 내가 루프를 통과할 때만 실행됩니다.다른 루프를 시도하고 새 프로젝트를 만들고 셔플 기능을 컨트롤러로 옮겼지만 아무 도움이 되지 않았습니다.
이 문제를 어떻게 해결해야 할지 아는 사람이 있나요?
해결책
이 문제를 중심으로 샘플 앱을 만들고 이동했습니다. Random rnd = new Random()
루프 외부로 내가 기대하는 동작을 제공합니다.
제 생각에는 카드 한 장만 섞은 것처럼 보이는 이유는 무작위로 생성된 값이 전체 루프에서 동일한 값이기 때문입니다.