Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

OBJET AU HASARD D'UNE COLLECTION


Information sur la source

Catégorie :Divers Source .NET ( DotNet ) Classé sous : randomize, collection, hasard Niveau : Débutant Date de création : 22/06/2004 Date de mise à jour : 22/06/2004 23:29:08 Vu : 5 798

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note


Description

Cet astuce vous permettra de sortir un objet au hasard d'une collection

Prenons par exemple une classe Humain qui a pour code :

    Private Class Humain
        Public Nom As String
  
        Public Sub New(ByVal NomHumain As String)
            Me.Nom = NomHumain
        End Sub

    End Class

Maintenant vous avez une société donc plusieurs Humain vous décidez donc de faire une collection d'Humain que vous nommez naturellement HumainCollection. Le code ressemble à ca :

    Private Class HumainCollection
        Inherits CollectionBase

        Default ReadOnly Property Item(ByVal index As Int32) As Humain
            Get
                Return CType(Me.List.Item(index), Humain)
            End Get
        End Property

        Public Function Add(ByVal Humain As Humain) As Humain
            Me.List.Add(Humain)
            Return Humain
        End Function

    End Class

j'ai ajouté la possibilité de rajouter des humains, et la propriété item, pour info de faire hériter notre classe faisait que les propriétés Count Clear GetEnumerator et RemoveAt

pour l'instant rien d'extraordinaire, ceux qui ont lu "Au coeur de Visual Basic.net" de Richard Clark (c2i.fr) verrons que je sors pas mes exemples au hasard (mais ca reste un excellent livre que je vous conseil).

Mais imaginons maintenant que vous vouliez prendre un Humain au hasard de votre classe.

pour cela modifions un peu le code de HumainCollection

    Private Class HumainCollection
        Inherits CollectionBase

        Default ReadOnly Property Item(ByVal index As Int32) As Humain
            Get
                Return CType(Me.List.Item(index), Humain)
            End Get
        End Property

        Public Function Add(ByVal Humain As Humain) As Humain
            Me.List.Add(Humain)
            Return Humain
        End Function

        Public Function Randomize() As Humain
            If Not Me.Count = 0 Then
                Dim Hasard As New Random
                Dim i As Integer = Hasard.Next(0, Me.Count)
                Return CType(Me.List.Item(i), Photo)
            End If
        End Function

    End Class

j'ai rajouté la function Randomize, celle ci retourne un humain qui bien sur trié au hasard de la collection

Le code de cette function est assez simple donc je ne l'explique pas.

donc maintenant une fois que l'on a notre collection d'humain, pour avoir un humain au hasard il suffit de faire

        Dim Societe as new HumainCollection
        Societe.Add(new Humain("Cyril"))
        Societe.Add(new Humain("Astrid"))

...

        Dim UnHumain As Humain = Societe.Randomize



MAJ :
[22.06.2004] Correction : si la collection est vide sa retournait une erreur
 

Source

  • Private Class HumainCollection
  • Inherits CollectionBase
  • Public Function Randomize() As Humain
  • If Not Me.Count = 0 Then
  • Dim Hasard As New Random
  • Dim i As Integer = Hasard.Next(0, Me.Count)
  • Return CType(Me.List.Item(i), Photo)
  • End If
  • End Function
  • End Class
    Private Class HumainCollection
        Inherits CollectionBase

        Public Function Randomize() As Humain
            If Not Me.Count = 0 Then
                Dim Hasard As New Random
                Dim i As Integer = Hasard.Next(0, Me.Count)
                Return CType(Me.List.Item(i), Photo)
            End If
        End Function

    End Class

Conclusion

J'attend vos commentaires
 

Commentaires et avis

signaler à un administrateur
Commentaire de ABF le 30/05/2007 12:04:53

Elle est ou la collection ?

signaler à un administrateur
Commentaire de Renfield le 30/05/2007 12:28:01 administrateur CS

voir section "source" ci dessus...

faut lire, avant de noter a tout va

signaler à un administrateur
Commentaire de simoneo le 02/08/2007 12:53:28

Bon code.

signaler à un administrateur
Commentaire de pheniximmortel le 09/02/2009 21:49:16

Une collection ne commence pas a 1 plutôt que a 0?

Hasard.Next(0, Me.Count)

Sinon sympa le code.

signaler à un administrateur
Commentaire de Renfield le 10/02/2009 06:32:35 administrateur CS

à 1 en VB6

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Collection d'objets [ par Guy Nancy ] Comment lister tous les objets (form, module, classe,...) d'un projet, afin d'effectuer le test suivant :********************************dim MyForm as J' ai un problème avec la fonction Randomize. [ par e-marck ] Bonjours, Je dois faire apparaître au hasard des nombre entre o et 10 pour le faire je fais x = rnd*10 et ça marche bien, mais comment puis-je f comment créer un tableau... [ par mike ] Voilà en fait je voudrais créer un tableau dans lequel une valeur tirée au hasard ne revienne plus ensuite! Par exemple si je fais un programme de lot le mot le plus long [ par Rodolf ] Voilà:g 9 lettres au hasard et je dois fabriquer des mots au hasard. Donc là je génére toutes les possibilités avec ces 9 lettres; mais avec la facon URGENT !!! Problème de collections [ par ols ] Etant habitué à la conception objet C++, un problème s'oppose à moi.Décor:J'ai définit un type d'objet TTypeVin à partir duquel j'ai fait une collecti SOS ! ! - Collection d'icônes [ par cameleon ] Bonjourje voudrais ouvrir une bibliothèque d'icônes personnelle dans une boite où l'on peut y voir toutes les icônes et choisir celle que l'on veut co Collections en ASP [ par Muad-Dib ] Salut tout le monde,J'ai créé une dll d'Apis dont l'une d'entre elle requiert une variable de type collection.Mon problème : je ne sais pas déclarer d Copie d'une collection ! [ par Niedernsill ] Comment faire une copie d'une collection ? et non pas une collection qui pointe vers les mêmes éléments comme ce codedim col2 as collectionset col2=ne La collection MSDN n'existe pas ??? aidez-moi SVP [ par Mario Soucy ] Bonjour, j'ai en ma possession les 2 cds de visual studio 6 entreprise edition et lorsque je viens pour installer MSDN il ne le trouve pas sur aucun d Choix de couleur au hasard par VB [ par Jeff ] Salut j'aimerais savoir comment on fait pour que VB puisse choisir au hasrad une couleur et la mette en mémoire...P.S. je suis débutant... Je doit réa


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,811 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.