Tirage aléatoire sans remise

Résolu
IRITGhadghoud Messages postés 1 Date d'inscription jeudi 28 mai 2015 Statut Membre Dernière intervention 28 mai 2015 - 28 mai 2015 à 14:51
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 28 mai 2015 à 15:00
Bonjour
Je suis débutante en C++ et je veux créer un programme qui a partir d'un fichier texte qui contient les identifiants des noeurds (0 jusqu'à 100) et leur position dans le réseau de tirer à chaque fois aléatoirement un noeud ( je ne veux pas qu'il tire le meme noeud plus qu'une fois ) .
Si quelqu'un peut m'aider je serais très reconnaissante . Merci
Cordialement

1 réponse

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
Modifié par cptpingu le 28/05/2015 à 15:41
Bonjour.

En c++ plusieurs solutions: Tu utilises std::random et tu tires un nombre aléatoire dans un std::vector. Une fois tiré, tu supprimes l'élément du tableau.
Ou alors, plus facile: tu tries le tableau aléatoirement via std::random_shuffle (ça mélange un tableau aléatoirement), puis tu les prends dans l'ordre, via une simple boucle (vu qu'ils sont triés aléatoirement, tu peux les prendres un par un à la suite, c'est équivalent).

Pour résumer la deuxième solution:
- Lis ton fichier via l'opérateur ">>", et std::ifstream.
- Met le résultat dans un std::vector.
- Trie ton std::vector via std::random_shuffle.
- Prend chacun des éléments de ton std::vector à la suite.

__________________________________________________________________________________________________

Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
0
Rejoignez-nous