Melanger un tableau vb.net

Signaler
Messages postés
1247
Date d'inscription
mardi 7 mai 2002
Statut
Membre
Dernière intervention
18 février 2019
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,

J'ai un tableau :

Dim Montant(24) As Integer

je rentre manuellement les données
'Attribution des montants
        Montant(1) = 1
        Montant(2) = 5
        Montant(3) = 10
        Montant(4) = 20
        Montant(5) = 50
        Montant(6) = 75
        Montant(7) = 100
        Montant(8) = 150
        Montant(9) = 200
        Montant(10) = 300
        Montant(11) = 400
        Montant(12) = 500
        Montant(13) = 1000
        Montant(14) = 2000
        Montant(15) = 3000
        Montant(16) = 3500
        Montant(17) = 4500
        Montant(18) = 5000
        Montant(19) = 6000
        Montant(20) = 7500
        Montant(21) = 10000
        Montant(22) = 25000
        Montant(23) = 50000
        Montant(24) = 100000


je cherche maintenant a mélanger mon tableau ?

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ICI

Merci d'y penser dans tes prochains messages.


l'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai ...

2 réponses

Messages postés
16276
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 septembre 2021
562
Bonsoir, une solution avec une List(Of), en fait deux.

Tu remplis la première avec tes données et tu initialises la seconde vide.

Ensuite tu fais une boucle while (il reste des données dans la liste1)
{
  • génère un index entier entre 0 et le nombre d'enregistrements de liste
  • ajoute la valeur de liste1(index) à liste2
  • supprime l'entrée à l'index de liste1


}
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bonjour,
Ce qui s'appelle tout simplement touiller un tableau
J'ai déjà eu l'occasion de montrer comment le faire sur le tableau lui-même et en n'en parcourant que la moitié en boucle.
Le code qui suit (pour VB6) est très facilement transposable en VB.Net. Seule la partie relative au tirage aléatoire (randomize et Rnd sont différentes) ===>> Montant étant donc le nom de ton tableau ===>>

Randomize Timer
nb = UBound(montant)
For i = 0 To nb \ 2
ou = Int(((nb - i) * Rnd))
temp = montant(ou)
montant(ou) = montant(nb - i)
montant(nb - i) = temp
Next

ce code est ultra rapide

EDIT : attention au signe \ : il indique une division entière
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.