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

C++ Discussion :

Nombre aleatoire réel


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Par défaut Nombre aleatoire réel
    bonjour!
    je veu une foction qui renvoie un nombre aleatoire de type float ou double.
    et merci.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Par défaut
    merci.
    je pense que les boost.random peuvent me servir mais le problem j'arrive pas a comprendre comment l'utiliser dans mon programme c c possible un exemple?

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tu as jeté un oeil à la documentation officielle ?
    http://www.boost.org/libs/random/

  5. #5
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Si tu veux un float entre 0 et 1 ([0,1]) , tu peux toujours faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    /* Sur [0,1] */
    float a = rand() / ( (float) RAND_MAX); //notation C 
     
    /* Sur [0,1[ */
    a = rand() / ( (float) RAND_MAX + 1.0f);
    Maintenant tu peux facilement définir les bornes que tu souhaites en utilisant ce type de raisonnement

  6. #6
    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
    j'arrive pas a comprendre comment l'utiliser dans mon programme c
    Ici, c'est le forum C++, pas le forum C.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Par défaut
    merci millie c simple et efficace pour mon programme

    ptetre jé pas bien bien compris ton raisonement pour des bornes[x,y]

    mais je pense que ca merche avec ce code

    // Sur [0,1]
    float a = rand() / ( (float) RAND_MAX);
    a=a*[y-x]+x;

  8. #8
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    En vérité, je pensais plutôt à ça (ce qui permet que ça ne dépend pas de l'écart entre a et b (sauf si ça dépasse RAND_MAX...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //entre deux entiers [a,b[
     
    float f = rand() / ( (float) RAND_MAX + 1.0f); //f est un réel dans [0,1[
    int e = rand() % (b-a) + a; //e est un entier sur [a,b-1]
    float g = e + f; //g est un réel sur [a,b[

  9. #9
    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
    man 3 rand dit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
                  « Si  vous  désirez engendrer un entier aléatoire entre 1 et 10,
                  vous devez toujours procéder en  utilisant  les  bits  de  poids
                  forts, comme dans :
     
                         j = 1 + (int) (10.0 * (rand() / (RAND_MAX + 1.0)));
     
                  et jamais ainsi :
     
                         j = 1 + (rand() % 10);
     
                  (car   cette   dernière   version  utilise  les  bits  de  poids
                  faibles). »
    Ta manière de calculer e est donc déconseillée.

  10. #10
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Ca dépend de l'implémentation de rand. J'ai donné une technique général, qui peut éventuellement être modifié suivant l'implémentation effective que tu utilises.

    Après, si ton man te dit ça, pour ta machine, il vaut mieux faire ça

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Deb.] Nombre aleatoire bricolage a critiquer
    Par Marc_3 dans le forum C++
    Réponses: 2
    Dernier message: 15/11/2005, 19h04
  2. Nombres aléatoires
    Par bdaboah dans le forum C
    Réponses: 10
    Dernier message: 05/10/2005, 11h04
  3. [langage] générer un nombre aléatoire gaussien
    Par kayari dans le forum Langage
    Réponses: 5
    Dernier message: 23/05/2005, 08h12
  4. nombres aleatoires en plsql
    Par al85 dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 29/03/2005, 19h07
  5. nombre aleatoire
    Par Bob dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 17/06/2002, 18h12

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