Your code is correct but it gives the value if cumulative is false.
The excel example gives the value when cumulative is true.
I don't have your function in my Excel version, just simlated it with a similar function and setting mu to zero and sigma to one.
Hope this helps a bit.
ddanbe
Senior Poster
3,829 posts since Oct 2008
Reputation Points: 2,070
Solved Threads: 661
Forgot to notice this was your first post!
Welcome to Daniweb afr0!
Try to use code tags when you post code.
I use underscores sometimes but, I would never use them in math formulas. It is confusing, I did not notice your unary minus at first.:|
You also use a few parenthesis to many.
This code (with code tags!) shows it(I think it is much more clearer to read):
static double NORMSDIST(double Zscore)
{
double Z = -(Zscore * Zscore) / 2;
double normDist = (1 / Math.Sqrt(2 * Math.PI)) * (Math.Exp(Z));
return normDist;
}
ddanbe
Senior Poster
3,829 posts since Oct 2008
Reputation Points: 2,070
Solved Threads: 661
I have a 2003 version of Excel with this : NORMDIST(x,mean,stddev,cumulative) Cumulative can be true or false.
Your C# function returns the y value for x under the bell curve, so it is not cumulative.
If you want a cumulative function, you have to calculate the area under the bell curve from minus infinity up to the value of x. Perhaps you already have an algoritm to do that?
ddanbe
Senior Poster
3,829 posts since Oct 2008
Reputation Points: 2,070
Solved Threads: 661
Perhaps you can do something(as a start) with this snippet
Just plug in your function and play with some parameters to get the results you want.
ddanbe
Senior Poster
3,829 posts since Oct 2008
Reputation Points: 2,070
Solved Threads: 661