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

Probabilités Discussion :

Générer une variable aléatoire gaussienne


Sujet :

Probabilités

  1. #1
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 259
    Points : 19 420
    Points
    19 420
    Billets dans le blog
    63
    Par défaut Générer une variable aléatoire gaussienne
    Bonjour,

    Il s'agit juste d'1 petit problème que je me suis posé récemment, sans application particulière, et dont je souhaiterai tout de même trouver la solution algorythmique.

    Voila, je souhaiterai à l'aide de la fonction random (Rnd sous VB) créer une fonction qui me génère une variable qui suive une gaussienne(m,e) (au lieu d'1 loi uniforme):

    Voila comment j'ai essayé sans succès:

    je considère n valeurs gaussiennes(m=0,e=1),

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    m=0 ' moyenne
    e=1 ' écart type
     
    n=100000 ' nombre de valeurs
    ces n valeurs doivent se répartire suivant la fameuse courbe, densité forte au centre 0, et densité plus faible à mesure que l'on s'écarte de la moyenne 0.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Randomize ' initialise le générateur aléatoire
    Indice = Int(Rnd * n + 1)  
    ' Génère un indice aléatoire entre 1 et n=100000
    ' C'est l'indice de la valeur que l'on cherche
     
    p = indice / n 
    ' détermine la proportion de valeurs à gauche de l'indice (indice compris) 
    ' cette proportion est elle égale à la valeur de la loi normal cumulé pour la valeur x que l'on cherche ?
     
    'Si oui alors, on obtient x en VB par:
    x=Excel.WorksheetFunction.NormInv(p, m, e)
    Ou NormInv est la fonction normale cumulative inverse sous Excel

    Mais les tests ne sont pas satisfaisant, alors pourriez vous éclairer ma lanterne ?

    Merci d'avance,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  2. #2
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Il y a une transformée traditionnelle à l'aide d'un générateur aléatoire uniforme qui marche très bien, tu l'as essayée ?

  3. #3
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 259
    Points : 19 420
    Points
    19 420
    Billets dans le blog
    63
    Par défaut
    @ Miles

    une transformée traditionnelle ???

    Peux-tu préciser ou me diriger sur 1 lien approprié afin que je puisse la comparer à ma méthode...

    En fait, J'aimerai comprendre pourquoi ma méthode ne semble pas donner les résultats escomptés..

    Merci par avance

    @+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  4. #4
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Oui, c'est la transformée de Box-Muller. Pour le pb que tu as, je ne sais pas, ça dépend de la fonction d'Excel, je ne connais pas ce que doivent être ses arguments.

  5. #5
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 259
    Points : 19 420
    Points
    19 420
    Billets dans le blog
    63
    Par défaut
    Ok je vais chercher du côté de Box-Muller

    En attendant j'aimerai bien que quelqu'un puisse m'indiquer mon erreur, car il doit bien y avoir une erreur puisque ca ne génère pas les valeurs souhaitées...
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 259
    Points : 19 420
    Points
    19 420
    Billets dans le blog
    63
    Par défaut
    Fausse alerte !

    Après avoir tester la fonction (ma méthode ) à grande échelle sous Access (n=10000) et sauvegarde des valeurs dans une table Access lié à 1 graphique dans 1 état.

    J'ai pu générer une courbe très proche (avec léger bruit..) du résultat attendu..le seul inconvénient concerne le cas indice=n et donc p=1 ou biensur la NormInv ne peut me renvoyer de valeur

    Voila, merci à Miles pour son aide, maintenant cette méthode est valable pour d'autres variables en utilisant par exemple les fonctions Excel (inverses)..
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

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

Discussions similaires

  1. Générer une chaine aléatoire
    Par java_fun dans le forum Général Java
    Réponses: 24
    Dernier message: 07/11/2018, 23h03
  2. [XSLT] Générer une couleur aléatoire
    Par tibou dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 18/03/2007, 01h05
  3. Générer une string aléatoire
    Par eG.dam dans le forum C++
    Réponses: 2
    Dernier message: 22/06/2006, 00h17
  4. Réponses: 14
    Dernier message: 15/05/2006, 16h34
  5. Besoin de générer une chaine aléatoire
    Par warsky dans le forum Langage
    Réponses: 7
    Dernier message: 01/12/2005, 19h34

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