Random [Fermé]

Signaler
-
Messages postés
4761
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
23 octobre 2020
-
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

Messages postés
4761
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
23 octobre 2020
1 234
'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);
}
Messages postés
550
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
30 avril 2021
70
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.
Messages postés
4761
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
23 octobre 2020
1 234 >
Messages postés
550
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
30 avril 2021

Oups, effectivement.