IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Randomiser une colonne d'une matrice


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 124
    Par défaut Randomiser une colonne d'une matrice
    Bonjour,

    j'ai une matrice du type:

    A 2 3 5 2
    A 5 8 7 4
    A 4 5 2 5
    B 8 5 4 2
    B 4 7 1 7
    B 5 8 1 4
    C 5 5 8 7
    C 4 1 4 4


    Et je voudrais inverser entre elles les lettres de la première colonne.

    Je veux écrire une fonction qui le fasse. En paramètre, il me fait la matrice initiale, sans doute le nombre de colonne et de lignes.

    Je pensais faire quelquechose qui prend les cases de lettres une à une et lui affecte au hasard un nouveau numéro de ligne. Mais le problème, c'est qu'une fois qu'une ligne a été affectée, il ne faut pas qu'elle puisse être affecté à une autre lettre. CAr à la fin, je veux récupérer le même nombre de A, B et C.

    donc je ne sais pas trop comment utiliser la fonction Randomize et Rnd.

    Voila, je suis débutante, si vous pouviez m'expliquer les choses simplement.

    Merci à tous.

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    On crée une SortedList<int,char> et, pour chaque ligne, on ajoute à cette liste un élément comportant comme clé une valeur Random et comme valeur la lettre de la première colonne. Si la clé est dèjà dans la SortedList, on refera des Randomize jusqu'à trouver une valeur nouvelle.

    Il suffit ensuite de boucler sur le nombre de lignes en remplaçant la première lettre de la ligne i par la ième valeur de la SortedList (mySortedList.Values[i]).

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 124
    Par défaut
    Bonjour,

    j'ai finalement trouver le moyen de randomiser ma première colonne mais j'ai un autre souci maintenant.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    i = 0
            Do While i < iDay
    
                Randomize()
                j = Int(NbDays - 2 + 1) * Rnd()
                Tabl(i) = j
                DansTab = 0
                For m = 0 To i - 1
                    If j = Tabl(m) Then DansTab = DansTab + 1
                Next
                If DansTab = 0 Then
    
                    UpdatetxtStatus(RowTitrData(j, 0), True)
                    RowTitrData(i, 0) = RowTitrData(j, 0)
                    UpdatetxtStatus("blabla", True)
                    UpdatetxtStatus(RowTitrData(i, 0), True)
    
    
                    i = i + 1
                End If
            Loop
    La première ligne rouge me donne ma colonne randomisée (lorsque la deuxième ligne rouge est en commentaire). Mais la deuxième ligne cause un problème, en effet, ma colonne n'est plus randomisée correctement, le nombre de chaque valeur que j'avais au départ n'est plus le même. Je ne comprends pas pourquoi car je ne fais que remplacer la valeur dans la "case" de la matrice. En fait, j'arrive à afficher ma colonne randomisée mais pas à "l'enregistrer" comme étant la nouvelle première colonne de ma matrice RowTitrData.

    Quelqun voit-il le problème?

    Merci à tous

Discussions similaires

  1. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  2. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  3. Réponses: 4
    Dernier message: 31/10/2007, 20h27
  4. supprimer une ligne et une colonne d'une matrice
    Par nessing dans le forum C++Builder
    Réponses: 8
    Dernier message: 14/08/2007, 15h42
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo