C #: Como devo embaralhar o conteúdo de uma matriz?
Eu tenho uma matriz de números inteiros chamados cartões [52]. Cada elemento contém um número inteiro que representa um cartão (os cartões [0] = 5 representariam os 6 dos clubes, por exemplo).
Foi assim que eu embaralhei a matriz. Funciona, mas estou recebendo repetições.
private void shuffleCards()
{
for (int i = 0; i < cards.Length; i++)
{
int randIndex = r.Next(0, 52);
int origCard = cards[i];
cards[i] = cards[randIndex];
cards[randIndex] = origCard;
}
}
r é a variável aleatória que eu inicializei no início do programa.
Ao testar o programa, notei que receberia o mesmo cartão 2 ou 3 vezes. Obviamente, não consigo repetições, todas devem ser diferentes. Não vejo como esse método me repete.
Como posso embaralhar essa matriz sem repetições? Obrigado.
EDITAR
Ok, a função de reprodução aleatória não foi o problema. É a função deal () que está causando o problema.
private void deal()
{
for (int i = 0; i < 26; i++)
{
userCards[i] = cards[i];
setUserValue(); //ignore this
}
for (int i = 26; i < 52; i++)
{
opponentCards[i - 26] = cards[i];
setOpponentValue(); //ignore this
}
}
Sei com certeza que não é a função aleatória. Imprimi os resultados de todos os cartões em um arquivo de texto e não vi iterações. No entanto, quando as cartas são distribuídas ao usuário e ao oponente, é quando todas as iterações ocorrem. Algum conselho?