Lois aléatoires uniforme, exponentielle et normale

Soyez le premier à donner votre avis sur cette source.

Vue 18 108 fois - Téléchargée 851 fois

Description

Il s'agit d'une librarie et des codes NUnit associés offrant des classes avec pour chacune:
- NextDouble : tirage d'un nombre aléatoire respectant la loi
- Mean : moyenne de la loi
- StandardDeviation : écart type de la loi

Petite précision : la loi normale est obtenue par utilisation du théorème central limite.

Conclusion :


Un exemple d'utilisation est fourni. Il utilise la librairie ZedGraph 1.0.1812.29779 (http://zedgraph.sourceforge.net/). Par ailleurs, la librairie est développée sur SharpDevelop 1.0.3 (http://www.sharpdevelop.net/OpenSource/SD/).
Merci à eux...

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
samedi 24 novembre 2007
Statut
Membre
Dernière intervention
24 novembre 2007

Je crois que je peux répondre à tes questions:
1. NB_LAW = 100:
champommier utilise le théorème limite central pour simuler sa loi gaussienne (ou normale). Le TLC dit que lorsque l'on additionne plusieurs loi indépendante, la loi résultante est une gaussienne lorsque le nombre de loi tend vers l'infini. Il a donc décidé d'additionner 100 loi uniforme pour créer sa loi gaussienne. Un statisticien d'application aurait choisi 5 comme chiffre, puisqu'il sait que c'est amplement suffisant pour obtenir une gaussienne à partir de lois uniformes. champommier a probablement choisi d'y aller pour un chiffre beaucoup plus gros puisqu'il n'a aucune idée de l'implémentation de la classe Random (dont sa loi uniforme dépend) et ainsi s'assurer d'une loi gaussienne.

2. rnd.StandardDeviation = value * Math.Sqrt(NB_LAW);
encore une fois c'est à cause du TLC. Lorsque l'on additionne n loi uniforme de moyenne u et d'écart-type o pour former une gaussienne, la loi gaussienne résultante sera de moyenne u et d'écart-type o/Sqrt(n), en tout cas c'est ce que je suppose.

3.a = currentMean - Math.Sqrt(3) * value;
il a juste joué avec les définitions de la moyenne et de l'écart-type pour une loi uniforme. On sait que:moyenne u (a+b)/2écart-type o (b-a)/Sqrt(12)
donc, en isolant a dans les deux équation, on a:
a = 2*u - b à l'aide de l'équation de la moyenne
a = b - Sqrt(12)*o à l'aide de l'équation de l'écart-type
2*u - b = b - Sqrt(12)*o
2*u + Sqrt(12) = 2b
u + Sqrt(12/4) = b
u + Sqrt(3) = b
et inversement pour a.

J'espère que j'ai été compréhensible
D
Messages postés
1
Date d'inscription
samedi 6 juillet 2002
Statut
Membre
Dernière intervention
19 février 2007

Salut champommier,

Merci pour le projet « LOIS ALÉATOIRES UNIFORME, EXPONENTIELLE ET NORMALE ». Il est très intéressant et j'essai de comprendre? mais il y a trois points sur lesquelles je sèche quant à la loi normale. Je te serais très reconnaissant pour un petit coup de pousse?

Pourquoi NB_LAW dans la class NormalLaw est toujours égale à 100, il y a-t-il une raison précise pour avoir choisi ce nombre et non pas un autre ?
const int NB_LAW=100; dans class NormalLaw

Pourquoi StandardDeviation est setté en étant multiplié par la racine carrée du nombre de laws ?
rnd.StandardDeviation = value * Math.Sqrt(NB_LAW);

Pourquoi est-ce que dans la définition des bornes a et b dans la class UniformLaw on multipli par la racine carrée de 3 ?
double currentMean = Mean;
a = currentMean - Math.Sqrt(3) * value;
b = currentMean + Math.Sqrt(3) * value;

Merci beaucoup pour ton aide.
Salutations,
Fabian

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.