bojda
Messages postés13Date d'inscriptionmardi 8 mars 2005StatutMembreDernière intervention28 février 2006
-
20 févr. 2006 à 14:48
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
29 mars 2008 à 00:08
Bonjour,
j'aimerais savoir si quelqu'un connaît un algorithme de mélange d'un tableau en c# ?
bojda
Messages postés13Date d'inscriptionmardi 8 mars 2005StatutMembreDernière intervention28 février 2006 21 mars 2006 à 15:52
Si quelqu'un pourrait?
En faite cette méthode, mais je la comprend pas tout à fait. Et le problème, c'est qu'environ une fois sur vingt Array.Sort(toto,
new
Melangeur()); me sort une erreur:
"Une exception non gérée du type 'System.ArgumentException' s'est produite dans mscorlib.dll
Informations supplémentaires :
IComparer (ou les méthodes IComparable dont il dépend) n'a pas retourné zéro lorsque Array.Sort a appelé x.
CompareTo(x). x : Poker.Card Type de x : Card Le IComparer : Poker.Shaker."
Si quelqu'un pourrait me dire une autre solution ou alors m'aider à trouver le problème.
Information complémentaire:
J'utilise cette méthode pour mélanger un tableau de carte dans un jeu de poker.
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
bojda
Messages postés13Date d'inscriptionmardi 8 mars 2005StatutMembreDernière intervention28 février 2006 24 mars 2006 à 10:46
Ouais, enfin je suis pas non plus totalement nul en prog... j'ai juste simplifié, j'ai pas tout marqué...
Le tableau de carte est bien initialisé, sinon ça ne marcherait pas du tout, et pas 19 fois sur 20...
Tant pis, je me suis résolu à ne pas résoudre cette erreur mais juste à la contourné.
Et ça marche, même si c'est pas la meilleure solution
Donc, dans le cas où l'on a une erreur, au lieu d'utilisé le tableau de carte à partir de la 1ère, on le fait à partir de la 26ème. Comme dans mon jeu de poker, sur une partie on n'utilise qu'au plus 25 cartes, et que l'erreur ce produit rarement... il y a de très très très faible probabilité pour que sur 2 tours consécutifs on ait les même carte.
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 25 mars 2006 à 19:28
En fait je pense que le problème doit venir de l'algorithme "QuickSort" utilisé pour le tri.
Il vaudrait peut être mieux que tu passes par une autre méthode de mélange.
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 25 mars 2006 à 20:37
Bon, le message n'était pas partit tout à l'heure... :
Voilà un petit exemple de ce à quoi je pensais :
private static void RandomizeArray(object[] array)
{
int arrayLength = array.Length;
// parcours de la liste en partant de la fin
for (int i = arrayLength - 1; i > 1; --i)
{
// tirage au sort d'un index entre 0 et la valeur courante de "i"
int randomIndex = rnd.Next(i);
// intervertion des éléments situés aux index "i" et "randomIndex"
object temp = array[i];
array[i] = array[randomIndex];
array[randomIndex] = temp;
}
}