Générer une variable aléatoire gaussienne
Bonjour, :D
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:
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:
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,