élimner les doublons dans un tableau vbscript
bacalao
-
lermite222 Messages postés 9042 Statut Contributeur -
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 :
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
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
-
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. -
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+