Random

Fermé
ANH - 24 mars 2017 à 13:27
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 27 mars 2017 à 01:50
Bonjour,

je me demande s'il y a une fonction random ou une autre qu'elle a le meme travaille que elle mais il me faut qu'à chaque fois elle me renvoie deux nombres à la fois et il ne faut pas qu'ils soient égaux.
Je ne sais pas comment faire ça, je ne sais meme pas si c possible ou pas
Merci.

1 réponse

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
24 mars 2017 à 15:52
'lut,

avec la fonction C
rand
(et donc avec tous ses problèmes liés au nombre max ou à l'algo utilisé):
#include <cstdlib>
#include <utility>
std::pair<int, int> paireAlea() {
    const int r1 = rand();
    int r2;
    do {
        r2 = rand();
    } while (r1 == 2);
    return std::pair<int, int>(r1, r2);
}

Ou en C++11:
#include <random>
#include <utility>

static std::random_device rd;

std::pair<int, int> paireAlea() {
    static std::mt19937 gen(rd());
    const int r1 = gen();
    int r2;
    do {
        r2 = gen();
    } while (r1 == 2);
    return std::pair<int, int>(r1, r2);
}
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
26 mars 2017 à 19:43
Il y a une faute de frappe dans les deux exemples,
le test à effectuer est
while ( r1 == r2 )
; le seul moyen pour être sûr que deux aléatoires ne sont pas égaux est de recommencer s'il le sont.
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225 > Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023
27 mars 2017 à 01:50
Oups, effectivement.
0