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

ScarHand 12 Messages postés mardi 1 février 2005Date d'inscription 1 septembre 2005 Dernière intervention - 17 juin 2005 à 23:24 - Dernière réponse : ScarHand 12 Messages postés mardi 1 février 2005Date d'inscription 1 septembre 2005 Dernière intervention
- 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
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 18 juin 2005 à 00:22
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

Merci Gobillot 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Meilleure réponse
gabrielgarcin 23 Messages postés mardi 29 juillet 2003Date d'inscription 30 novembre 2011 Dernière intervention - 18 juin 2005 à 10:43
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"

Merci gabrielgarcin 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

ScarHand 12 Messages postés mardi 1 février 2005Date d'inscription 1 septembre 2005 Dernière intervention - 18 juin 2005 à 01:56
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
ScarHand 12 Messages postés mardi 1 février 2005Date d'inscription 1 septembre 2005 Dernière intervention - 18 juin 2005 à 11:24
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...
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 18 juin 2005 à 11:43
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
ScarHand 12 Messages postés mardi 1 février 2005Date d'inscription 1 septembre 2005 Dernière intervention - 18 juin 2005 à 14:07
0
Merci
Ah oui, effectivement, je n'y avais pas pensé, c'est logique après tout.
Et bien, merci...
ScarHand 12 Messages postés mardi 1 février 2005Date d'inscription 1 septembre 2005 Dernière intervention - 20 juin 2005 à 00:02
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.