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,