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

C++ Discussion :

tirage aléatoire dans un vecteur


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    etudiant
    Inscrit en
    Avril 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : etudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2018
    Messages : 56
    Points : 32
    Points
    32
    Par défaut tirage aléatoire dans un vecteur
    Bonjour,

    Comme dit dans le titre, comment est-il possible de tirer un élément aléatoirement dans un vecteur ?
    sachant que ce vecteur et déjà créer et qu'il a une taille n

    Merci

    edit :

    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
     
    struct population {
    	vector<Individual> pop;		//creation of the population
     
     
    };
     
     
    	int p;
    	p=0;
        while(p<n) 
        { 
        	j=randint(0, nb_colonne_matrice);
     
        	element=file[0][j];
        	pop.push_back(element);
     
        }

  2. #2
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut
    Salut,

    Mhhh le mieux en général c'est que tu viennes avec une idée de la réponse, que tu montres que tu as déjà réfléchi à la question, que tu nous dise où tu bloques
    Si tu fais ça, tu auras bien plus de réponses !
    Bon courage,
    Seab
    Le débutant, lui, ignore qu'il ignore à ce point, il est fier de ses premiers succès, bien plus qu'il n'est conscient de l'étendue de ce qu'il ne sait pas, dès qu'il progresse en revanche, dès que s'accroît ce qu'il sait, il commence à saisir tout ce qui manque encore à son savoir. Qui sait peu ignore aussi très peu. [Roger Pol-Droit]
    Github
    Mon tout premier projet: une bibliothèque de simulation de génétique des populations

  3. #3
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    Voici une fonction qui renvoie une chaîne aléatoire composée de chiffre et lettres min/maj:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    std::string RandomBoundary(unsigned len)
    {
    	static char const abclist[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    	static std::minstd_rand rndgen;
    	std::string boundary(len, '0');
    	std::uniform_int_distribution<uint32_t> dis(0, _countof(abclist) - 2);
    	for (char & c : boundary)
    		c = abclist[dis(rndgen)];
    	return boundary;
    }
    Et voici une réponse possible au problème posé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    template<typename T>
    T RandomFromVector(std::vector<T> & values)
    {
    	static std::minstd_rand rndgen;
    	std::uniform_int_distribution<uint32_t> dis(0, values.size() - 1);
    	return values[dis(rndgen)];
    }

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