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 :

[Statistiques] Générer une loi normale


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Dev C++, CUDA
    Inscrit en
    Mai 2005
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Dev C++, CUDA
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2005
    Messages : 83
    Par défaut [Statistiques] Générer une loi normale
    Bonjour,

    Je cherche comment générer un nombre aléatoire, en C/C++, suivant une loi normale N(mu ,sig)

    Merci par avance.

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par mhtrinh
    Je cherche comment générer un nombre aléatoire, en C/C++, suivant une loi normale N(mu ,sig)
    Tu as l'algo ?

    Si oui, code le et poste ton code si tu as un problème.
    Sinon : Algorithmes

  3. #3
    Membre confirmé
    Homme Profil pro
    Dev C++, CUDA
    Inscrit en
    Mai 2005
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Dev C++, CUDA
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2005
    Messages : 83
    Par défaut
    Je pensais qu'il existait une librairie qui faisait cela ...

  4. #4
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 40
    Par défaut
    Si je me trompe pas l'algo est décrit dans les numerical recipes.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Salut, pour tirer une loi normale (mu,sig), tu dois tirer une variable aléatoire X suivant la loi normale centrée réduite et ensuite tu pose Y=sig*X+mu

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    /* 
       RAND is a macro which returns a pseudo-random numbers from a uniform
       distribution on the interval [0 1]
    */
    #define RAND ((double) rand())/((double) RAND_MAX)
     
    /*
       TWOPI = 2.0*pi
    */
    #define TWOPI 2.0*3.141592653589793238462643383279502884197169399375
     
    /* 
       RANDN is a macro which returns a pseudo-random numbers from a normal
       distribution with mean zero and standard deviation one. This macro uses Box
       Muller's algorithm
    */
    #define RANDN sqrt(-2.0*log(RAND))*cos(TWOPI*RAND)
     
     
    double NormalDistribution(double mu,double sigma)
    {
    /*
       This function returns a pseudo-random numbers from a normal distribution with
       mean equal at mu and standard deviation equal at sigma > 0
    */
      if(sigma<=0.0)
      {
        fprintf(stderr,"Error in file %s line %u function %s : sigma must be > 0\nExit program\n",__FILE__,__LINE__,__FUNCTION__);
        exit(EXIT_FAILURE);
      }
     
      return (mu+sigma*RANDN);
     
    }

  6. #6
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par viddak
    Si je me trompe pas l'algo est décrit dans les numerical recipes.
    En effet, et ces braves gens donnent meme le code source ici, chapitre 7.

  7. #7
    Membre confirmé
    Homme Profil pro
    Dev C++, CUDA
    Inscrit en
    Mai 2005
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Dev C++, CUDA
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2005
    Messages : 83
    Par défaut
    Super !! c'est ce que je voulais.

    Merci beaucoup tout le monde !!!!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/05/2011, 12h48
  2. Passer d'une loi Uniforme à une loi Normale
    Par chloe28 dans le forum MATLAB
    Réponses: 3
    Dernier message: 10/05/2011, 00h16
  3. Réponses: 6
    Dernier message: 24/03/2010, 17h22
  4. test d'ajustement à une loi normale
    Par ricololo dans le forum Statistiques, Data Mining et Data Science
    Réponses: 0
    Dernier message: 25/09/2008, 21h00
  5. Réponses: 3
    Dernier message: 05/07/2007, 00h13

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