Pb de boublon avec un randomize

Résolu
neotetsuo34 Messages postés 68 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 23 mars 2007 - 25 mars 2005 à 13:27
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 25 mars 2005 à 14:42
bonjour, quand je fais un randomize le pb que j'ai est que ca m'affiche plusieurs fois le meme numero donc j'essai de faire un controle a ce niveau mais ca ne fonctionne pas.
voici mon code :

Dim place, i, z, j As Integer
Call initequipe
Randomize
For i = 0 To 15
'donne un nombre aléatoire
place = Int(Rnd * 15 + 1)

For z = 0 To 15
tabverif(z) = place
For j = 0 To 15
If place = tabverif(j) Then
place = Int(Rnd * 15 + 1)
End If
Next
Next

Text1(i).Text = tabequipe(place)


Next
merci de votre aide.

3 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
25 mars 2005 à 14:42
si j'ai bien compris tu veux une liste de nombres aléatoires de 0 à 15 mais que chaque chiffre soit présent.
pour cela on prépare une table avec tous les nombres 0 à 15 et ensuite on les mélange aléatoirement.
pour être plus logique je modifie un peu pour que l'élément i ne soit pas mélangé avec lui même.
par exemple quand i = 15 il sera mélangé avec un élément de 0 à 14.
pour l'élément 1 il sera mélangé obligatoirement avec le 0.

Dim tabverif(15) As Integer
Dim i As Integer
Dim place As Integer
Dim tmp As Integer

RandomizeFor i 0 To 15: tabverif(i) i: Next

For i = 15 To 1 step-1
place = Rnd *( i - 1) tmp tabverif(i): tabverif(i) tabverif(place): tabverif(place) = tmp
Next i

For i = 0 to 15
place = tabverif(i)
Text1(i).Text = tabequipe(place)
next

Daniel
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
25 mars 2005 à 14:03
Dim tabverif(15) As Integer
Dim i As Integer
Dim place As Integer
Dim tmp As Integer

RandomizeFor i 0 To 15: tabverif(i) i: Next

For i = 0 To 15
place = (Rnd * i) tmp tabverif(i): tabverif(i) tabverif(place): tabverif(place) = tmp
Next i

Daniel
0
neotetsuo34 Messages postés 68 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 23 mars 2007
25 mars 2005 à 14:25
peut-tu m'expliquer comment marche le code que tu m'as écrit stp car je ne connais pas cette syntaxe et ou faut-il que j'affiche le Text1(i).Text = tabequipe(place) étant donné que je débute. merci
0
Rejoignez-nous