élimner les doublons dans un tableau vbscript

bacalao -  
lermite222 Messages postés 9042 Statut Contributeur -
Bonjours a tous,

Voila je débute avec vbscript,
Hier j'ai voulu essayer la fonction Random avec un tableau d'une dimension, je vous explique mon exemple :
je veux créer un tableau d'une dimension et le remplir avec des numéros générer par random, jusque la tous est ok :


Option Explicit
 
Dim max,min,i,n,Tab(4)
 
'=============================='
'Fonction Random
'=============================='
 
Function Random() 
 
max=8
min=1
Randomize
Random = (Int((max-min+1)*Rnd+min))
 
End function
 
'=============================='
'End Fonction 
'=============================='
 
n = 1
 
Do While n < 5 'remplissage du tableau avec do while 
 
Tab(n-1) = Random()
 
wscript.echo Tab(n-1) ' m'affiche les numéros rempli dans chaque ligne
 
n = n + 1
 
Loop 
 
'=============================='
'End Fonction 
'=============================='
 
n = 1
 
Do While n < 5 'remplissage du tableau avec do while 
 
Tab(n-1) = Random()
 
wscript.echo Tab(n-1) ' m'affiche les numéros rempli dans chaque ligne
 
n = n + 1
 
Loop 



Le problème c'est que Random rempli toujours le tableau avec un doublon, pour remédier a cela, j'ai essayé d'introduire une condition if avec des OR sur chaque ligne mais ça ne marche pas j'ai essayé aussi d'introduire un For each, rien non plus !

en résumer je cherche comment introduire une condition dedans : tant qu'on trouve un doublon dans une ligne on rappelle la fonction Random pour le remplir a nouveau jus qu'on obtient un tableau sans doublon

Quelqu'un a une idée

Merci d'avance


A voir également:

2 réponses

.N Messages postés 27 Statut Membre 576
 
Tu ne sembles pas parler de monnaie, et encore moins de moutons, alors ce sera la deuxième fois que je présente ce lien : https://forums.commentcamarche.net/forum/affich-21166785-nombre-aleatoires-c

Mais bon, il semble que ton script ne nécessite pas une si grande optimisation que ça. Donc, pour «éliminer les doublons» comme tu dis, ta solution fonctionnerais sans problèmes «pratiques» à ce qu'il semble. Toutefois, je pense qu'il te serait préférable d'utiliser la solution présenté sur le poste duquel j'ai posé le lien ci-haut. Bref, décrémenté le modulo à chaque itération, et incrémenter la valeur obtenue pour chaque nombre inférieur ou égale à celle-ci. Si tu veux, je poste un petit code, cette fois en VBScript, qui le fait.
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Bonjour,
Avec un tableau de boolean.
En VBScript je ne sais pas mais en VB je dirais...
Sub Tirer10()
Dim T(10) As Boolean, Tableau(10) As Integer
Dim i As Integer, g As Integer
    g = 1
    For i = 1 To 10
        While T(g)
            g = Int((10 * Rnd) + 1)
        Wend
        T(g) = True: Tableau(i) = g
    Next i
End Sub

A+
0