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 :

Génération de points suivant loi normale


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Par défaut Génération de points suivant loi normale
    Bonjour à tous,

    je possède une série de coordonnées de points en deux dimensions.

    J'aimerais, pour chacun de ces points, créer un ensemble de points voisin dans un certain rayon. Je voudrais que ces nouveaux points soient distribués suivant une loi normale, c'est à dire que le nombre de points proches du point central sera plus nombreux que ceux éloignés.

    Existe-t-il une fonction en C pour générer des nombres suivant une loi normale?

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Des renseignements et un exemple ici

  3. #3
    Membre confirmé
    Homme Profil pro
    Collégien
    Inscrit en
    Mars 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Mars 2003
    Messages : 192
    Par défaut
    Salut,


    De manière générale, chercher du coté de l'algorithme de Box & Muller.


    A+

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Par défaut
    Merci à vous pour votre aide.

    Donc si je comprends bien, pour générer un point suivant la loi normale autour d'un point central x , je peux utiliser cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    double genererNombreLoiNormale(double mu, double sigma) {
     
            // On récupère deux nombres pseudo-aléatoires indépendants selon une loi uniforme sur l'intervalle [0;1]
            double randNumUni = ((double) rand())/((double) RAND_MAX);
            double randNumBi = ((double) rand())/((double) RAND_MAX);
     
            // On récupère un nombre pseudo-aléatoire selon une loi normale centrée réduite
            // (Paramètres : moyenne = 0, écart-type = 1)
            // Utilisation de l'algorithme de Box-Muller
            double randNumNorm = sqrt(-2.0*log(randNumUni))*cos(DEUX_PI*randNumBi);
     
            return (mu + sigma * randNumNorm);
    }
    avec mu l'abscisse de mon point central x et sigma le rayon dans lequel je veux générer mes points?

    Et pour obtenir l'ordonnée du point à générer je dois utiliser la même formule avec cos remplacé par sin?

    N'étant pas certain de bien comprendre le principe, je préfère m'assurer...

    Merci beaucoup

  5. #5
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Et pour obtenir l'ordonnée du point à générer je dois utiliser la même formule avec cos remplacé par sin?
    Cette loi normale doit s'appliquer à quoi ?
    Si tu prends deux coordonnées (x et y) qui suivent une loi normale, alors la distance du point au point d'origine n'est pas distribuée suivant une loi normale mais, sauf erreur, suit une distribution ricienne.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Par défaut
    La loi doit s'appliquer à la distribution de mes points...donc je suppose à chaque coordonnée (deux dimensions).

    J'ai donc un point central X = (x_1,y_1) et je veux avoir autour de ce point plus de points proches que de points éloignés.

    Apparemment l'algorithme de Box et Muller permet cela mais je ne sais pas trop comment l'utiliser...

    L'illustration représente assez bien ce que je désire : une densité de points plus proche du centre.



    Je ne sais pas s'il faut que je génère indépendamment l'abscisse et l'ordonnée de chaque point suivant une loi normale.

Discussions similaires

  1. Génération de nombres aléatoires et loi normale
    Par nhatgiang174 dans le forum Excel
    Réponses: 5
    Dernier message: 16/02/2015, 09h55
  2. Remplir un tableau avec une répartition suivant une loi normale
    Par Di.jo dans le forum Algorithmes et structures de données
    Réponses: 0
    Dernier message: 04/12/2014, 17h48
  3. génération des nombres aleatores selon loi normal
    Par raja_louhichi dans le forum MATLAB
    Réponses: 1
    Dernier message: 24/04/2014, 13h27
  4. générer des données aléatoires suivants la Loi Normal
    Par need2learn dans le forum Mathématiques
    Réponses: 3
    Dernier message: 28/08/2009, 09h03
  5. [Statistiques] Générer une loi normale
    Par mhtrinh dans le forum C
    Réponses: 6
    Dernier message: 19/05/2006, 21h23

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