Question

Permettez-moi de commencer par dire désolé pour mon terrible de la grammaire et de l'orthographe.

J'ai un MVC3 projet qui crée un Pont et ajoute de 52 cartes à elle.Puis j'ai ajouté une fonction de lecture aléatoire qui fonctionne uniquement lorsque Je fais un pas de travers la boucle dans le shuffle méthode.

Dans ma classe, le Pont, je créer un Tableau qui contient 52 PlayingCard objets.Le pont a une méthode qui copie le Tableau pour une Liste qui s'affiche dans mon point de Vue, et il a aussi une méthode qui mélange la liste.

Pas facile à expliquer mais le code ne fonctionne une fois sauf si je fais un pas de travers.

Mon shuffle méthode dans mon Deck modèle.

 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;
    }   
}

Sortie après shuffle, sans étape à travers:

*4 diamants 1 coeur 2 coeurs 3 coeurs 4 coeurs 5 coeurs 6 coeurs 7 coeur 8 coeurs 9 coeurs 10 coeurs 11 coeurs 12 coeurs 13 cœurs 1 pique 2 cosses 3 cosses 4 piques 5 piques 6 piques 7 pique 8 piques 9 de pique 10 de pique 11 pique 12 piques 13 piques 1 des clubs 2 clubs 3 clubs 4 clubs 5 clubs 6 clubs 7 clubs 8 clubs 9 clubs 10 clubs 11 clubs 12 clubs 13 clubs 1 diamants 2 diamants 12 diamants 3 diamants 5 diamants 6 diamants 7 diamants 8 diamants 9 diamants 10 diamants 11 diamants 13 diamants *

Sortie après l'étape à travers 15 fois:

2 cosses 3 clubs 5 piques 3 diamants 12 diamants 13 cœurs 11 coeurs 1 pique 6 clubs 5 diamants 1 des clubs 12 coeurs 7 clubs 13 piques 2 clubs 10 coeurs 3 cosses 4 piques 3 coeurs 6 piques 7 pique 8 piques 9 de pique 10 de pique 11 pique 12 piques 8 coeurs 7 coeur 1 coeur 2 coeurs 4 clubs 5 clubs 9 coeurs 6 coeurs 8 clubs 9 clubs 10 clubs 11 clubs 12 clubs 13 clubs 1 diamants 2 diamants 4 coeurs 4 diamants 5 coeurs 6 diamants 7 diamants 8 diamants 9 diamants 10 diamants 11 diamants 13 diamants

Sortie après avoir marché à travers la totalité de la boucle:

10 coeurs 6 clubs 8 coeurs 5 coeurs 5 clubs 7 diamants 5 piques 11 diamants 12 piques 12 clubs 8 diamants 5 diamants 1 des clubs 9 de pique 10 diamants 12 coeurs 8 piques 9 clubs 13 clubs 6 coeurs 1 pique 11 pique 1 coeur 12 diamants 4 clubs 3 clubs 8 clubs 9 diamants 7 clubs 2 clubs 3 diamants 1 diamants 7 pique 10 de pique 2 coeurs 6 piques 13 piques 4 piques 2 cosses 6 diamants 4 coeurs 2 diamants 4 diamants 11 clubs 7 coeur 11 coeurs 3 cosses 3 coeurs 10 clubs 13 cœurs 9 coeurs 13 diamants

Comme le montre la boucle ne s'exécute que lorsque je fais un pas de travers.J'ai essayé les différentes boucles, fait un nouveau projet, déplacer la fonction de lecture aléatoire pour le contrôleur, rien n'y fait.

N'importe qui ont des idées de comment je pourrais résoudre ce problème?

Était-ce utile?

La solution

J'ai créé une application d'exemple autour de cela et en mouvement Random rnd = new Random() à l'extérieur de la boucle me donne le comportement je m'attends.

La raison pour laquelle il n'est apparu que pour shuffle une carte, à mon avis, c'est parce que la valeur générée de façon aléatoire a la même valeur pour l'ensemble de la boucle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top