Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Random

2 réponses
Avatar
Vincent
Bonjour,

J'utilise la fonction Random. Je ne comprends pas bien son fontionnement.
Je l'utilise dans une méthode d'une classe.
Si je relance la méthode plusieurs fois le random donne le même résultat ...
c'est pas très aléatoire :)
Par contre chaque fois que j'instancie ma classe j'ai un nouveau "tirage".
Il n'y a pas moyen de re-initialiser un random sans tout relancer ?

merci

Vincent

2 réponses

Avatar
Jean-marc
Vincent wrote:
Bonjour,

J'utilise la fonction Random. Je ne comprends pas bien son
fontionnement. Je l'utilise dans une méthode d'une classe.
Si je relance la méthode plusieurs fois le random donne le même
résultat ... c'est pas très aléatoire :)
Par contre chaque fois que j'instancie ma classe j'ai un nouveau
"tirage". Il n'y a pas moyen de re-initialiser un random sans tout
relancer ?
merci

Vincent



Hello,

utilises tu le bon constructeur, c'est à dire celui sans arguments, comme
ceci:

private void button1_Click(object sender, EventArgs e)
{
Random xx = new Random();
MessageBox.Show("Random returns : " + xx.Next());
}

Dans ce cas, cela fonctionne sans problèmes.

A noter qu'il existe un constructeur qui prend en argument le seed (la
graine).
Si on utilise celui la, lors bien sur on obtient toujours la même séquence.


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
OD
> J'utilise la fonction Random. Je ne comprends pas bien son fontionnement.
Je l'utilise dans une méthode d'une classe.
Si je relance la méthode plusieurs fois le random donne le même résultat ...
c'est pas très aléatoire :)
Par contre chaque fois que j'instancie ma classe j'ai un nouveau "tirage".
Il n'y a pas moyen de re-initialiser un random sans tout relancer ?



Les ordinateurs sont incapables par essence de générer des nombres
"aléatoires". Les "générateurs" tels que Random sous .NET ou
l'équivalent sous toutes les plateformes et langages du monde ne sont
que des algorithmes qui prennent une "graine" comme point de départ et
qui créent ensuite une suite qui "semble" aléatoire. Mais à partir
d'une même graine tu obtiendras toujours la même série. Cette assurance
est intéressante et peut être mise à profit dans certaines
circonstances d'ailleurs.

Quand tu dis que tu utilises Random dans "une méthode d'une classe",
comme toute méthode est forcément déclarée dans une classe veux tu
parler d'une "méthode de classe" (appelée méthode statique sous c#) ?
Je suppose que oui.
Dans ce cas cela signifie que tu dois créer aussi une variable statique
de type Random (initialisée) et que ta méthode doit réutiliser cette
instance à chaque appel et non pas recréer une instance de Random à
chaque fois.

--


OD___
www.e-naxos.com