Pregunta

Permítanme comenzar diciendo lo siento por mi terrible de la gramática y de la ortografía.

Tengo un MVC3 proyecto que crea un Mazo y añade 52 cartas para él.Luego he añadido una función aleatoria que sólo funciona cuando Me paso a través de el bucle en el shuffle método.

En mi clase Cubierta puedo crear una Matriz que contiene 52 PlayingCard objetos.La cubierta tiene un método que copia la Matriz en una Lista que se muestra, en mi Opinión, y tiene también un método que baraja la lista.

No es fácil de explicar, pero el código sólo se ejecuta una vez a menos que me paso a través de ella.

Mi shuffle método en mi Deck modelo.

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

Salida después de la reproducción aleatoria, sin que el paso a través de:

*4 diamantes 1 corazón 2 corazones 3 corazones 4 corazones 5 corazones 6 corazones 7 corazones 8 corazones 9 corazones 10 corazones 11 corazones 12 corazones 13 corazones 1 picas 2 picas 3 picas 4 picas 5 de espadas 6 picas 7 espadas 8 picas 9 de espadas 10 de espadas 11 picas 12 picas 13 picas 1 clubes 2 clubes 3 clubes 4 clubes 5 clubes 6 clubes 7 clubes 8 clubes 9 clubes 10 clubes 11 clubes 12 clubes 13 clubes 1 diamantes 2 diamantes 12 diamantes 3 diamantes 5 diamantes 6 diamantes 7 diamantes 8 diamantes 9 diamantes 10 diamantes 11 diamantes 13 diamantes *

Salida después del paso a través de 15 veces:

2 picas 3 clubes 5 de espadas 3 diamantes 12 diamantes 13 corazones 11 corazones 1 picas 6 clubes 5 diamantes 1 clubes 12 corazones 7 clubes 13 picas 2 clubes 10 corazones 3 picas 4 picas 3 corazones 6 picas 7 espadas 8 picas 9 de espadas 10 de espadas 11 picas 12 picas 8 corazones 7 corazones 1 corazón 2 corazones 4 clubes 5 clubes 9 corazones 6 corazones 8 clubes 9 clubes 10 clubes 11 clubes 12 clubes 13 clubes 1 diamantes 2 diamantes 4 corazones 4 diamantes 5 corazones 6 diamantes 7 diamantes 8 diamantes 9 diamantes 10 diamantes 11 diamantes 13 diamantes

Salida después de caminar a través de todo el ciclo:

10 corazones 6 clubes 8 corazones 5 corazones 5 clubes 7 diamantes 5 de espadas 11 diamantes 12 picas 12 clubes 8 diamantes 5 diamantes 1 clubes 9 de espadas 10 diamantes 12 corazones 8 picas 9 clubes 13 clubes 6 corazones 1 picas 11 picas 1 corazón 12 diamantes 4 clubes 3 clubes 8 clubes 9 diamantes 7 clubes 2 clubes 3 diamantes 1 diamantes 7 espadas 10 de espadas 2 corazones 6 picas 13 picas 4 picas 2 picas 6 diamantes 4 corazones 2 diamantes 4 diamantes 11 clubes 7 corazones 11 corazones 3 picas 3 corazones 10 clubes 13 corazones 9 corazones 13 diamantes

Como se muestra el bucle sólo se ejecuta cuando me paso a través de ella.He probado diferentes bucles, hizo un nuevo proyecto, mueva la función de selección aleatoria para el controlador, nada ayuda.

Alguien tiene alguna idea de cómo puedo solucionar esto?

¿Fue útil?

Solución

He creado una aplicación de ejemplo de todo esto y en movimiento Random rnd = new Random() a fuera del bucle me da el comportamiento que yo esperaría.

La razón por la que sólo apareció a barajar una carta, en mi opinión, es debido a que el valor generado al azar fue el mismo valor para todo el ciclo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top