Tableau de nombres aléatoires uniques

Résolu
ScarHand Messages postés 12 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 1 septembre 2005 - 17 juin 2005 à 23:24
ScarHand Messages postés 12 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 1 septembre 2005 - 20 juin 2005 à 00:02
Bonsoir,

Je voudrais connaitre un moyen simple pour insérer des nombres aléatoires de 1 à 10 (par ex) dans un tableau, de telle manière que chaque élément soit différent des autres.
Autrement dit, j'ai les nombres de 1 à 10 et je voudrais les mélanger et les stocker dans un tableau.

J'ai essayé ça :

For i = 0 To 9
Tab(i) = Int((24 * Rnd) + 1)
If i > 0 Then
temp(i) = Tab(i)
While (temp = Tab[i])
Tab(i) = Int((24 * Rnd) + 1)
Wend
End If
Next i

Mais apparement il teste que l'élément précédent et pas tous.
Je voudrais tyrouver un moyen de le faire sans passer dans une deuxième boucle...
Est-ce possible?

Merci.

Scarhand

7 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
18 juin 2005 à 00:22
pourquoi 24 ?

de 1 à 10 c'est Int(Rnd * 10) + 1



tu prends ton tableau de nombre de 1 à 10 déjà rempli,

tu choisis un nombre aléatoire de 1 à 10

tu permute l'élément choisi avec l'élément 10

et on recommence avec 9



il ya la même chose ici:

http://www.vbfrance.com/forum.v2.aspx?ID=482738


Daniel
3
gabrielgarcin Messages postés 23 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 30 novembre 2011
18 juin 2005 à 10:43
Bonjour.

Il y certainement plusieurs solutions.
En ce qui me concerne j'utiliserais la suivante:

Gabriel GARCIN

__________________________________________________________________
Dim i As Integer, j As Integer, N As Integer, A(24) As Integer, Test(24) As Boolean
N = 24
For i = 1 To N
A(i) = 0
Test(i) = False
Next i
'______________________________________________
'Pour obtenir la même série de nombres
'Call Rnd(-1)
'Call Randomize
'_______________________________________________


For i = 1 To N
Continue:
j = Rnd(13) * (N - 1) + 1
If Test(j) = False Then
A(i) = j
Test(j) = True
Else
GoTo Continue
End If
Next i


For i = 1 To N
MsgBox "A(" & i & ")=" & A(i)
Next i
MsgBox "FIN"
3
ScarHand Messages postés 12 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 1 septembre 2005
18 juin 2005 à 01:56
oui bon, en fait moi j'ai un tableau de 24 éléments mais le principe reste le même...

L'idée est bonne, je vais faire ça.

Merci
0
ScarHand Messages postés 12 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 1 septembre 2005
18 juin 2005 à 11:24
Merci, je trouve la solution de Daniel plus clair et simple. Cependant, il me semble que sa méthode ne fonctionne pas si les nombres d'origines ne sont pas consécutifs...

Celle de Gabriel n'est pas mauvaise non plus.

Merci à tous les deux, vous avez résolu mon problème...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
18 juin 2005 à 11:43
Les données qui sont dans le tableau à l'origine n'ont aucune
importante, que ce soit des nombres, des chaînes ou n'importe quoi.







Dim i As Integer

Dim x As Integer

Dim tmp As String

Dim Table() As String



Randomize Timer



ReDim Table(23)

List1.Clear



' remplissage du Tableau et mise dans une ListBox

For i = 0 To 23

Table(i) = Chr$(Rnd * 25 + 65) + Chr$(Rnd * 25 + 65) + Chr$(Rnd * 25 + 65)

List1.AddItem Table(i)

Next



' mélange du Tableau

For i = 23 To 1 Step -1

x = Rnd * i

tmp = Table(x)

Table(x) = Table(i)

Table(i) = tmp

Next



'controle dans la ListBox

For i = 0 To 23

List1.List(i) = List1.List(i) & vbTab & Table(i)

Next


Daniel
0
ScarHand Messages postés 12 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 1 septembre 2005
18 juin 2005 à 14:07
Ah oui, effectivement, je n'y avais pas pensé, c'est logique après tout.
Et bien, merci...
0
ScarHand Messages postés 12 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 1 septembre 2005
20 juin 2005 à 00:02
Rebonsoir,

Voila, je vais pas créer un nouveau topic pour ça, je veux juste savoir comment je pourrais faire pour intégrer 2 dossiers remplis d'images lors de l'empaquetage (création de l'install)... pour que ces dossiers soient installés aussi.

Merci
0
Rejoignez-nous