Random

ANH -  
ElementW Messages postés 5690 Statut Contributeur -
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

  1. ElementW Messages postés 5690 Statut Contributeur 1 293
     
    '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
    1. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
       
      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
      1. ElementW Messages postés 5690 Statut Contributeur 1 293 > Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention  
         
        Oups, effectivement.
        0