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

Algorithmes et structures de données Discussion :

générer des variables gaussiennes


Sujet :

Algorithmes et structures de données

  1. #1
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut générer des variables gaussiennes
    Bonjour
    j'ai un programme qui me permet de générer des variables gaussiennes, de moyennes nulle et de variance egale à 1.
    Cependant, j'aimerais générer des variables gaussiennes de moyenne nulle, mais de variance egale à 0.1 ou 0.3.
    Savez vous comment je peux passer du premier au deuxieme?
    merci

  2. #2
    Membre actif Avatar de ronan99999
    Inscrit en
    Juillet 2003
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 279
    Points : 299
    Points
    299
    Par défaut
    Si X -> N(1,0) (loi central normée de variance égale à 1 et de moyenne nulle)

    alors X*Mu + Lambda -> N(Mu²,Lambda)

    tu peux regarder ici:

    http://fr.wikipedia.org/wiki/Loi_normale

    [edit]nafaitdesfotes[/edit]
    Si tu ne te plantes pas, comment veux tu pousser?

  3. #3
    Membre éprouvé
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Points : 1 205
    Points
    1 205
    Par défaut
    Citation Envoyé par ronan99999
    Si X -> N(0,1) (loi central normée de variance nulle et de moyenne égale à 1)

    alors X*Mu + Lambda -> N(Mu²,Lambda)
    Bonjour,

    C'est inversé, non?

    X -> N(0,1) : moyenne nulle, et la variance égale à 1.

    alors: X*Mu + Lambda -> N(Lambda, Mu²) : moyenne=Lambda, variance=Mu².
    MATLAB 7.4 (R2007a) WIN XP SP2
    -------------------------------------

  4. #4
    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
    Points : 9 818
    Points
    9 818
    Par défaut
    J'utilisais la technique de Box-muller qui marchait bien (c'est ce que j'utilisais pour générer des bruits gaussiens dans une image) :

    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
    GaussianRandomizer::GaussianRandomizer(float sigma, float mean)
    {
     if(sigma<0)
      throw Millie::IllegalArgument("GaussianRandomizer");
     
     _sqrt =sigma;
     _mean = mean;
     
     srand(time(0));
     
     
    }
     
    float GaussianRandomizer::get()
    {
     int i1 = (rand() % 65000) + 1 ; //génère un entier entre 1 et 65000 (selon une distribution uniforme)
     int i2 = (rand() % 65000) + 1 ;
     
     /*on génère un réel aléatoire entre 0 et 1 strictement*/
     float u1 = static_cast<float>(i1) / 65001.0f; /*u1>0 et <1 strictement*/
     float u2 = static_cast<float>(i2) / 65001.0f;
     
     /*box muller*/
     return (sqrt(-2.0f * log(u1)) * cos( 2.0f * M_PI * u2) * _sqrt + _mean);
     
    }
    Je ne répondrai à aucune question technique en privé

  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
    Points : 9 818
    Points
    9 818
    Par défaut
    J'ai refait une écriture algorithmique :

    http://www.developpez.net/forums/sho....php?p=2042319

    J'avais fait une erreur dans le post d'avance, je multipliais par racine(sigma) au lieu de sigma

    J'ai vu d'autres implémentations possibles en cherchant avec le mot clef "box muller", un peu différente.
    Je ne répondrai à aucune question technique en privé

Discussions similaires

  1. Générer des variables
    Par touraco dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/10/2013, 11h41
  2. Réponses: 3
    Dernier message: 17/12/2009, 19h59
  3. Générer des variables Kettle à partir d'une table
    Par FBSVG dans le forum kettle/PDI
    Réponses: 10
    Dernier message: 17/07/2009, 16h07
  4. générer des variables
    Par juju44 dans le forum Macro
    Réponses: 8
    Dernier message: 19/03/2009, 12h11
  5. Générer des variables avec une boucle
    Par Anamelech dans le forum Delphi
    Réponses: 15
    Dernier message: 03/11/2006, 12h33

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