massanu a écrit :
- 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
|
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 :
using System; namespace SandBoxConsole { class Program { static void Main(string[] args) { Console. WriteLine(new Carte ()); Console. WriteLine(new Carte ()); Console. WriteLine(new Carte ()); Console. WriteLine(new Carte ()); Console. WriteLine(new Carte ()); Console.ReadKey(true); } } static class MyRandomGenerator { private static Random rnd; static MyRandomGenerator() { } public static int NextValue(int max) { return rnd.Next(0, max) + 1; } } public class Carte { int numero = 0; public Carte() { numero = MyRandomGenerator.NextValue(52); } public override string ToString() { return string.Format("Carte numéro {0}.", numero); } } }
|
(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 :
Carte numéro 42.
Carte numéro 6.
Carte numéro 8.
Carte numéro 10.
Carte numéro 52.
|
Carte numéro 10.
Carte numéro 33.
Carte numéro 32.
Carte numéro 50.
Carte numéro 31.
|
Carte numéro 10.
Carte numéro 18.
Carte numéro 1.
Carte numéro 44.
Carte numéro 49.
|
Carte numéro 24.
Carte numéro 4.
Carte numéro 37.
Carte numéro 47.
Carte numéro 19.
|
(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...