élimner les doublons dans un tableau vbscript

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

2 réponses

  1. Contributeur
    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+
    1. 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.