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 :

generation de nombres aléatoires


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut generation de nombres aléatoires
    bonjour
    j'essaye de génerer un flux de nombres aléatoires,
    enutilisant boost.

    Le problème est que quand je lance le programme, il y a toujours que 2 de flux différents qui sortent, tout le temps avec les memes nombres.
    C'est toujours les memes flux qui reviennent.
    D'ou peut venir ce pb?

    Je comprends pas, parce que j'ai fait un prog qui utilisait le meme type de code et qui fonctionnait tres bien.



    voici comment je déclarer ma fonction:

    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
     
    #include <boost/tr1/random.hpp>
    #include <math.h>
    #include <ctime>
    #include <time.h>
    #include <cstlib>
     
    using namespace boost;
    using namespace std;
     
    boost::mt19937 engine(static_cast<long unsigned int>(clock()));
    boost::normal_distribution<double> generator;
    boost::variate_generator<boost::mt19937, boost::normal_distribution<double>> binded(engine,generator);
     
     
    vector<double> brownien;
    int main(){
    brownien.push_back(binded());
    }
    je me suis basé sur le tuto http://matthieu-brucher.developpez.c.../boost/random/

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Par défaut
    Pourquoi ne pas avoir posté dans Boost. Ce serait plus à sa place.

    Ne connaissant pas bien boost, je ne peux te répondre, mais je peux te dire que tu as des coquilles dans ton include.
    Ça c'est l'entête pour le C.
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include <math.h>
    #include <time.h>
    #include <stlib.h>
    Ça c'est pour le C++
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include <cmath>
    #include <ctime>
    #include <cstlib>
    Les entêtes <cxxx> indiquent que tu utilises une bibliothèque C lorsque tu fais un programme C++. Il y a quelques manipulations supplémentaires qui ne sont pas faites quand tu utilises l'entête <xxx.h>

  3. #3
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut
    je ne sais pas si le pb vien de boost,
    de mon code, ou de mon compilateur, mais je pense pas que cela concerne boost.

    mais merci pour la réponse

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Si tu rajoutes un cout << brownien[0] << endl; et que tu compiles ce code, tu remarqueras qu'il fonctionne bien et donne des résultats différents à chaque fois.

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Il est possible que clock() retourne toujours la même valeur.

  6. #6
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Garulfo Voir le message
    Pourquoi ne pas avoir posté dans Boost. Ce serait plus à sa place.

    Ne connaissant pas bien boost, je ne peux te répondre, mais je peux te dire que tu as des coquilles dans ton include.
    Ça c'est l'entête pour le C.
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include <math.h>
    #include <time.h>
    #include <stlib.h>
    Ça c'est pour le C++
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include <cmath>
    #include <ctime>
    #include <cstlib>
    Les entêtes <cxxx> indiquent que tu utilises une bibliothèque C lorsque tu fais un programme C++. Il y a quelques manipulations supplémentaires qui ne sont pas faites quand tu utilises l'entête <xxx.h>
    Les entêtes <xxx.h> sont toujours valables en C++ et, même s'ils sont définis dans l'annexe D (et donc en théorie "deprecated"), il y a peu de chances qu'ils soient enlevés de la prochaine norme, certains militant pour qu'ils soient même enlevé de cette clause et mis dans la partie générale.

    Le problème est qu'avoir une implémentation conforme et utile sur ces points quand on ne contrôle pas simultanément les bibliothèques C et C++ est impossible. Ce qui fait que C++0X a relaché les contraintes.

    La dernière fois que j'ai regardé les choses en détails -- mais ça fait quelques années maintenant, les choses ont pu changer -- le comportement avec xxx.h était plus homogène parmi les implémentations que j'ai testées et plus utile en pratique (entre autres, définir _POSIX_C_SOURCE introduisait partout les modifications demandées par POSIX pour <xxx.h> et pas pour <cxxx>).

Discussions similaires

  1. generation d'un nombre aléatoire
    Par etoilenord dans le forum C
    Réponses: 12
    Dernier message: 12/11/2013, 14h47
  2. Nombres aléatoires
    Par Mat 74 dans le forum Assembleur
    Réponses: 20
    Dernier message: 29/08/2004, 13h31
  3. recherche algo de génération de nombre aléatoire
    Par Pascale38 dans le forum MFC
    Réponses: 2
    Dernier message: 26/01/2004, 14h20
  4. Nombre aléatoire en SQL
    Par sqlnet dans le forum Langage SQL
    Réponses: 8
    Dernier message: 19/08/2003, 12h38
  5. Générer un nombre aléatoire entre 0 et 1 (INCLUS !!!)
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 22/08/2002, 16h30

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