Un gros random (plus que les 10 millisecondes.)

Résolu
Signaler
Messages postés
59
Date d'inscription
dimanche 29 avril 2007
Statut
Membre
Dernière intervention
21 août 2007
-
Messages postés
20
Date d'inscription
samedi 22 novembre 2003
Statut
Membre
Dernière intervention
21 octobre 2011
-
Bonjour,
Désolé pour le grand nombre de question que je pose aujourd'hui mais bon ...
J'utilise actuellement dans mon projet un random avec les millisecondes, mais je pense bien qu'au dela de 10 valeurs, ça doit bloquer.

Voici le code :

              {
               Random rand = new Random(DateTime.Now.Millisecond);
               int value = rand.Next(6);
               if (value == 0) session.send("****");
               else if (value == 1) session.send("****");
               else if (value == 2) session.send("****");
               else if(value == 3) session.send("****");
               else if(value == 4) session.send("****");
               else if(value == 5) session.send("****");
                }

Comment pourrais-je faire autrement ??
Merci d'avance.

7 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
30 octobre 2008
55
Non, en fait ton Random est limité par le '6' que tu passes a la méthode Next.
Si par exemple tu veux 10000 valeurs (entre 0 et  9999) tu fais rand.Next(10000);

Mx
MVP C# 
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
30 octobre 2008
55
Non, ca n'a pas de rapport avec les millisecondes. Ce qui a un rapport entre les millisecondes, c'est le 'seed'. Essaie de mettre cette valeur a 1000 par exemple, et regarde les valeurs affichées lors de plusieurs executions : tu auras toujours la meme séquence. Un algo de génération de nombres aléatoires dépend justement de ce seed pour débuter sa série de nombres aléatoire. Meme seed -> memes valeurs a chaque execution.

Je te conseille donc de ne pas mettre de seed dans ton constructeur, ou de faire ainsi : Random rand = new Random(Environment.TickCount). Les 2 ont le meme effet

Pour la valeur de la méthode Next, tu peux mettre jusqu'a Int32.MaxValue
Mx
MVP C# 
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
30 octobre 2008
55
Salut,

que veux tu dire par "au dela de 10 valeurs, ca doit bloquer" ?

Mx
MVP C# 
Messages postés
59
Date d'inscription
dimanche 29 avril 2007
Statut
Membre
Dernière intervention
21 août 2007
7
Euh je sais pas, y a pas que 10 millisecondes ? Ah non 99 ....
Donc je peux mettre 99 phrases ou c'est illimité ?
Messages postés
59
Date d'inscription
dimanche 29 avril 2007
Statut
Membre
Dernière intervention
21 août 2007
7
Oui c'est moi qui l'avait mis à 6, j'avais compris ça. Je suis deja monté à 8 mais je ne pensais pas qu'on pouvait le monter autant qu'on voulait puisque ça à un rapport avec les millisecondes....
Merci.
Messages postés
59
Date d'inscription
dimanche 29 avril 2007
Statut
Membre
Dernière intervention
21 août 2007
7
Ok
Messages postés
20
Date d'inscription
samedi 22 novembre 2003
Statut
Membre
Dernière intervention
21 octobre 2011

merci un peut en retard,comme quoi le forum son utile même après presque 5 ans
un débutant en csharp