Kommunauty
Connexion
Inscription

[C++] Conteneur STL et "nombre aléatoire"


MarshalCaine Messages : 94

Bonsoir,

Le contexte c'est une liste (std::list<T>, dont le type T est remplacé par des instances) et j'aimerai récupérer aléatoirement un des éléments de ma liste.

J'ai choisi une liste car je veux garder une possibilité de trier mes éléments, mais surtout je veux pouvoir supprimer n'importe quel élément de ma liste (cf. l'algorithme remove).

J'ai fait quelques recherches mais ça n'a pas été concluant, et j'ai essayé l'algorithme random_shuffle() mais j'ai par réussie à l'exécuter.

Merci d'avance.

lundi 5 mars 2012

MarshalCaine Messages : 94

En me levant je viens de trouvé une solution provisoire, donc si vous avez mieux je suis preneur je vous poste ma fonction qui permet de tirer une valeur "aléatoirement".

Clique pour afficher la zone invisible
Fermer ce cadre

int tirerElement(std::list<T> * uneListe)
{
    int leNombreAleatoire(0), i;
    leNombreAleatoire=rand() % uneListe->size();
    std::list<T>::iterator it;
    it=uneListe->begin();
    for(i=0 ; i < leNombreAleatoire ; i++, it++)
    {}
    return (*it);
}

/* /!\ le T est a remplacé par le type que contient notre liste... pour ma part je l'ai testé sur une liste de int.
Au début de mon "main" j'ai l'initialisation des nombres aléatoire : srand(time(0)). */

mardi 6 mars 2012 (Dernière édition mardi 6 mars 2012)

Répondre Pour répondre, tu dois d'abord t'inscrire rapidement sur Kommunauty. Rejoins-nous vite !