-
Mélanger un vecteur
Salut,
Connaissez vous une fonction pour mélanger aléatoirement l'ordre des points d'un vector. Mon but étant d'éviter qu'une fonction de tri suivant ce mélange ne donne pas systématiquement le même ordre de point si le tri s'effectue selon un critère binaire :
Un exemple pour être plus clair :
J'ai 5 points associés soit à la valeur -1 soit à la valeur 1, p1=1 p2=-1 p3=1 p4=-1 p5=1 je vais classer en premier les points à -1 p2 p4, puis les points à 1 p1 p3 p5, mais je ne veux pas reproduire d'une fois sur l'autre l'ordre p2 p4 et p1 p3 p5...
Merci
-
Salut,
J'imagine que tu peux toujours le faire en deux fois avec un std::random_shuffle suivi d'un std::stable_sort, mais il y a peut-être plus subtil/simple.
MAT.
-
Merci beaucoup ça devrait faire l'affaire, je ne connaissais pas random_shuffle c'est vraiment super la STL...
Mais je ne comprends pas pourquoi j'aurai besoin d'un stable_sort au lieu du sort normal. Y a t-il une raison pour laquelle mes éléments mélangés se remettraient dans un certain ordre en les triant ? Pour info mon vecteur est un vecteur de pointeurs d'objets sur lesquelles j'ai défini un prédicat de classement personnalisé dépendant de la valeur numérique d'un des attributs de l'objet.
-
Non tu n'as sans doute pas *besoin* d'un std::stable_sort, un std::sort devrait te donner le résultat escompté.
MAT.
-
Merci beaucoup ça devrait faire l'affaire, je ne connaissais pas random_shuffle c'est vraiment super la STL...
Mais je ne comprends pas pourquoi j'aurai besoin d'un stable_sort au lieu du sort normal. Y a t-il une raison pour laquelle mes éléments mélangés se remettraient dans un certain ordre en les triant ? Pour info mon vecteur est un vecteur de pointeurs d'objets sur lesquelles j'ai défini un prédicat de classement personnalisé dépendant de la valeur numérique d'un des attributs de l'objet.
-