Tableau de nombres aléatoires uniques [Résolu]

Messages postés
12
Date d'inscription
mardi 1 février 2005
Dernière intervention
1 septembre 2005
- - Dernière réponse : ScarHand
Messages postés
12
Date d'inscription
mardi 1 février 2005
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
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
16
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 89 internautes nous ont dit merci ce mois-ci

Messages postés
23
Date d'inscription
mardi 29 juillet 2003
Dernière intervention
30 novembre 2011
3
Merci
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"

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 89 internautes nous ont dit merci ce mois-ci

Messages postés
12
Date d'inscription
mardi 1 février 2005
Dernière intervention
1 septembre 2005
0
Merci
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
Messages postés
12
Date d'inscription
mardi 1 février 2005
Dernière intervention
1 septembre 2005
0
Merci
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...
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
16
0
Merci
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
Messages postés
12
Date d'inscription
mardi 1 février 2005
Dernière intervention
1 septembre 2005
0
Merci
Ah oui, effectivement, je n'y avais pas pensé, c'est logique après tout.
Et bien, merci...
Messages postés
12
Date d'inscription
mardi 1 février 2005
Dernière intervention
1 septembre 2005
0
Merci
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

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.