NHenry
Messages postés15083Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention19 septembre 2023159 23 juil. 2012 à 09:23
Bonjour,
Je n'ai pas regardé si il y avait encore un risque de doublon, mais voici un exemple de code qui fait ce que tu veux (Code tapé hors EDI, risque d'erreur) :
Dim lRnd As Random()=New Random()
Dim i as Integer
Dim lTmp as integer
Dim lLstNb As List(of Integer)= New List(of Integer)
'Nombre de Nombre à générer
Dim lMaxNb=5
Do While lLstNb.Count<lMaxNb
lTmp=lRnd.Next(1,49)
For i=0 to lLstNb.Count-1
If lLstNb(i)=lTmp Then
Continue Do 'Doublon, on rejette
End If
Next i
lLstNb.Add(lTmp) 'Pas de doublon, on prend
Loop
'Affichage
For i = 1 To 6
Me.Controls("LblNb" & i).Text = (lLstNb(i - 1)).ToString()
Next i
shaeks
Messages postés26Date d'inscriptionmercredi 27 juillet 2005StatutNon membreDernière intervention19 août 2023 23 juil. 2012 à 02:29
MAJ
NHenry
Messages postés15083Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention19 septembre 2023159 22 juil. 2012 à 23:11
Concernant l'espace de nom, c'est une rétro compatibilité avec du VB6, donc à éviter en .NET, ça n'apporte rien.
shaeks
Messages postés26Date d'inscriptionmercredi 27 juillet 2005StatutNon membreDernière intervention19 août 2023 22 juil. 2012 à 20:27
@NHenry : Est ce que tu peux me fournir un lien qui explique l'utilité de ce qui suit :
"1) Actives Option Strict et Oprion Explicit
2) Retires l'import automatique de l'espace de nom Microsoft.VisualBasic
(Pour les 2 premiers points, voir ma signature sur le forum)"
Merci
shaeks
Messages postés26Date d'inscriptionmercredi 27 juillet 2005StatutNon membreDernière intervention19 août 2023 22 juil. 2012 à 20:25
23 juil. 2012 à 09:23
Je n'ai pas regardé si il y avait encore un risque de doublon, mais voici un exemple de code qui fait ce que tu veux (Code tapé hors EDI, risque d'erreur) :
Dim lRnd As Random()=New Random()
Dim i as Integer
Dim lTmp as integer
Dim lLstNb As List(of Integer)= New List(of Integer)
'Nombre de Nombre à générer
Dim lMaxNb=5
Do While lLstNb.Count<lMaxNb
lTmp=lRnd.Next(1,49)
For i=0 to lLstNb.Count-1
If lLstNb(i)=lTmp Then
Continue Do 'Doublon, on rejette
End If
Next i
lLstNb.Add(lTmp) 'Pas de doublon, on prend
Loop
'Affichage
For i = 1 To 6
Me.Controls("LblNb" & i).Text = (lLstNb(i - 1)).ToString()
Next i
23 juil. 2012 à 02:29
22 juil. 2012 à 23:11
Toujours faillible :
1 2 3 3 4 5
Bol=True
1 2 3 1 4 5
Bol=False
i=i+1
1 1 2 3 4 5
Car une fois le nombre régénéré, tu passes à la position suivante sans controler les précédentes.
Concernant Option Explicit : http://msdn.microsoft.com/fr-fr/library/y9341s4f.aspx
Strict : http://msdn.microsoft.com/fr-fr/library/zcd4xwzs.aspx
Concernant l'espace de nom, c'est une rétro compatibilité avec du VB6, donc à éviter en .NET, ça n'apporte rien.
22 juil. 2012 à 20:27
"1) Actives Option Strict et Oprion Explicit
2) Retires l'import automatique de l'espace de nom Microsoft.VisualBasic
(Pour les 2 premiers points, voir ma signature sur le forum)"
Merci
22 juil. 2012 à 20:25
J'ai ajouté une boucle Do...Loop.
Cdt,
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.