Probleme improbable de Random [DOTNET] - C#/.NET managed - Programmation
Marsh Posté le 12-07-2008 à 15:01:45
J'ajouterais meme a l'improbable ceci
Si je fais la même génération aléatoire sans passé par une création d'instance d'objet carte
En gros
Code :
|
Et bien cela me donne bien 5 numéros distinct
Je doit avoir un problème avec mes instances d'objet mais je ne sais guère lequel
Marsh Posté le 12-07-2008 à 15:07:32
A chaque carte que tu crées, tu réinitialises ta séquence random avec la même seed (puisque tes cartes sont créées quasi simultanément), puis tu tires le premier numéro de la séquence.
Normal que ce soit à chaque fois le même.
Initialise rnd une seule fois au début de ton programme, et pas à chaque création d'une carte.
De plus, il est tout à fait admissible de tirer deux fois la même carte avec ton implémentation. Pour tirer des cartes toutes différentes, il te faut supprimer les cartes déjà tirées de ta pile. Il y a différentes implémentations pour ca, je te laisse chercher un moment.
Marsh Posté le 12-07-2008 à 15:28:27
Merci pour ta réponse
- Si j'ai réinitialisé le seed à chaque fois, c'est parcequ'en l'initialisant une seule fois au départ, j'obtenais les mêmes cartes également
Ce qui me laisse pensé que le problème viens bien quand j'initialise les cartes dans le constructeur de la classe Carte
Marsh Posté le 15-07-2008 à 13:56:01
massanu a écrit : |
impossible, tu t'es planté quelque part.
initialise ton random en dehors de ta classe, et passe-le en paramètre à ton constructeur.
ou alors crée une classe static avec comme variable privée static le random, que tu initialise dans le constructeur static et ajoute une méthode static public "NextValue" :
Code :
|
(les puristes POO aiment pas ce raccourci .NET pour faire des singleton, mais moi j'aime bien, je trouve ça super simple d'utilisation)
Sortie :
|
|
|
|
(pour le reste, +1 avec cpp6128, tu peux tirer des doublons, c'est mal)
passe plutôt par un List<Carte> trié aléatoirement, et tu tires les 5 premières, en plus ça se comportera comme en vrai...
Marsh Posté le 15-07-2008 à 14:17:03
ps : et à la base pas besoin de spécifier un seed à ton random, le seed automatique est plus "aléatoire", ce qui réduit la prédictabilité du résultat.
Marsh Posté le 15-07-2008 à 15:09:59
MagicBuzz a écrit :
|
Nickel chrome, Merci
Je vais utilisé ce bout de code pour la génération aléatoire, j'espere que sa pourra aider d'autre personne
Marsh Posté le 12-07-2008 à 14:53:50
Bonjour
J'ai un probleme tres sympa de Random qui commence a bien me les casser
Je vous expose le truc
Je suis sur un bout de code pour un jeu de carte (rien d'exceptionel me direz vous)
J'ai une classe CARTE qui génère une carte avec un numéro.
Je doit tirer 5 cartes (5 différentes) et c'est LA que le problème survient
Dans le constructeur de la classe CARTE j'ai ceci :
Elles sont crées tout simplement comme ceci :
Mais le problème c'est qu'il me fou a chaque fois les 5 mêmes cartes
Comprend vraiment pas pourquoi
Si vous avez une idée, n'hesitez pas !
merci
Message édité par massanu le 12-07-2008 à 14:55:00