élimner les doublons dans un tableau vbscript

Fermé
bacalao - 16 mars 2011 à 21:35
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 17 mars 2011 à 05:25
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 25 Date d'inscription samedi 12 mars 2011 Statut Membre Dernière intervention 17 mars 2011 547
17 mars 2011 à 04:08
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 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
17 mars 2011 à 05:25
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