IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

Boost : probleme avec time et aleatoire .


Sujet :

Boost C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Points : 8
    Points
    8
    Par défaut Boost : probleme avec time et aleatoire .
    Bonjour a tous ! je pense que ce probleme est assez commun neamoins meme après avoir cherché je n'ai pas trouvé le probleme .... Voici le code de mon programme qui est censé générer des nombres aléatoire de distribution uniforme et ce differents a chaque execution
    Jai pourtant utilisé la fonction seed avec la fonction time(NULL) je ne comprends pas pourquoi ce la ne fonctionne pas ...
    Si vous pouvez jeter un oeil ce serait sympa ?
    merci d'avance !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    int main(){
     // generateur de nombres pseudo aleatoire
      boost::mt19937 rng ; 
      //boost::mt19937 engine(static_cast<long unsigned int>(clock()));
      // choix de la distribution a utiliser
      boost::uniform_real<> dist(0,1);
     
      // association generateur et distribution
      boost::variate_generator<boost::mt19937, boost::uniform_real<> > binded(rng, dist);
      for (int i=0 ; i<10 ; i++){ 
      std::cout << binded();
      std::cout<< '\n' ;
      usleep(10000);
      rng.seed ((unsigned int)(time(NULL))) ;
      /*std::cout<< time(NULL) ;*/
        std::cout <<  std::endl;
      }
     
     return 0 ;
     
     
     
    }

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Je ne te vois pas appeler le générateur aléatoire dans ce code. De plus, le fait de modifier la graine (seed) doit être fait en dehors de la boucle, une fois pour toute pour l'ensemble du programme.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Bonjour, d'abord merci de ta réponse
    Pour ce qui est du seed effectivement je l'ai sorti de la boucle
    j'appele le générateur avec binded et j'ecrit le resultat ... C'est bien avec le variate_generator que l'on associe le générateur et la distribution choisie ? binded a été construit comme cela.

    meme après avoir sorti le seed de la boucle jobtient toujours la meme série de 10 nombres ,
    d'ou est ce que ce probleme peut venir?
    :s

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    variate_generator prend le paramètre de son constructeur par copie. Il faut donc que tu en change la graine avant de créer le variate_generator, ou alors en faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boost::variate_generator<boost::mt19937 &, boost::uniform_real<> > binded(rng, dist);
    Ou un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boost::variate_generator<boost::mt19937 *, boost::uniform_real<> > binded(rng, dist);

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    ah oui effectivement .... merci
    ca fonctionne maintenant !
    par contre .... euh autre probleme toujours avec variate_generator
    quand j'ecrit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    long int POISSON(double lambda){
        // Create a Mersenne twister random number generator
        // that is seeded once with #seconds since 1970
        static mt19937 rng(static_cast<unsigned> (std::time(0)));
     
        // select Poisson probability distribution
        poisson_distribution<long int> Mon_Poisson(lamda);
     
        // bind random number generator to distribution, forming a function
        variate_generator<mt19937&, poisson_distribution<long int> >  binded(rng, Mon_Poisson);
     
        // sample from the distribution
        return binded();
    }

    jai un bon nombre d'erreurs liees a poisson_distribution et variate_generator
    "in instanciation of 'boost::variate_generator"
    "no type named 'result_type' in class boost::math::poisson_distribution<int, boost::math::policies::default_policy,boost::math::policies::default_policies::,etc etc

    savez vous d'ou cela peut venir ? jai comparé avec une amie qui a exactement comme moi et cela compile , je ne vois pas du tout ce qu'il n'accepte pas ? probleme de type dans les template ????
    Merci d'avance !

Discussions similaires

  1. [Débutant] Probleme avec les nombres aleatoire en c++ builder
    Par jammel dans le forum C++Builder
    Réponses: 2
    Dernier message: 20/11/2013, 22h33
  2. probleme avec time
    Par ldoudl dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/02/2006, 23h48
  3. boost - Probleme avec compilateur C++ de visual studio 2005
    Par gilles641 dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 24/01/2006, 19h03
  4. probleme avec boost et devcpp
    Par Krost dans le forum Dev-C++
    Réponses: 12
    Dernier message: 02/01/2005, 19h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo