Solved

Getting a value from Standard Dev, and Mean

Posted on 2004-09-29
8
518 Views
Last Modified: 2008-02-01
Hi all,

I have the Mean and Standard Deviation of a variable. This variable is cost, and this will vary for each entity. Using the mean and SD can someone tell me how I would create a random number based on lognormal.

For example if the SD is 1 and the mean is 50, I would expect the result to produce (mainly) between 49 and 51. (I understand that this isnt always true by the very nature of the curve).

I am making the tool in Java, which contains method nextGaussian() to return a random number normal distrubution between 0 and 1.

Many thanks,

H
0
Comment
Question by:wazdaka
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
  • 2
8 Comments
 

Author Comment

by:wazdaka
ID: 12183525
sorry, nextGaussian() uses mean 0.0 and SD 1. Not sure if this helps at all.
0
 
LVL 27

Accepted Solution

by:
d-glitch earned 125 total points
ID: 12184010
[Your Mean]  + [Your SD] * nextGaussian()      should give you what you want
0
 
LVL 27

Expert Comment

by:d-glitch
ID: 12184101
nextGaussian() should give you a normal curve centered around zero with SD = 1

Multiplying by  [Your SD] spreads (or shrinks) the width of the curve.

Adding [Your Mean]  shifts the curve up to where you want it centered.

You may have to check for negative values:  If your mean was 5 and your SD is one, nextGaussin() will return values <5 once every million calls.
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 27

Expert Comment

by:d-glitch
ID: 12184119
You may have to check for negative values:  If your mean was 5 and your SD is one, nextGaussin() will return values < -5 once every million calls.

That's negative 5.
0
 

Author Comment

by:wazdaka
ID: 12184452
Perfect, thank you very much. I should always be shifting the curve up enough to not worry about negatives bu I'll take the absolute value of the result just in case.

Thanks again

H
0
 
LVL 7

Expert Comment

by:wytcom
ID: 12184545
A lower level, more work but more flexibility, approach is to generate a uniformly distributed random number and then project it onto the gaussian distribution to find the corresponding gaussian coordinate.  This isn't too hard to do:

Generate a uniformly distributed number x where  0 <= u < 1

Set the number of standard deviations you want to cover in your gaussian: Nsd = 40

Set a left bound for the range of your Gaussian distribution: gl = m - sd*Nsd

Set a right bound for the range of your Gaussian distribution: gr = m + sd*Nsd

Set the number of intervals to divide the Gaussian distribution into: N = 200

Set the initial coordinate to g = gl

Set the interval to dg = (gr - gl)/N

Write a subroutine to return the height of the gaussian given the coordinate value g (as well as the mean and standard deviation) = G(g)

Now start at the left bound and begin to sum the value of the Gaussian curve at coordinate g = gl.  Increment g = gl + dg and accumulate G(g) into the sum.  So far we have sum = G(gl) + G(gl + dg) ...

Continue this summation until the sum is greater than or equal to u (your uniformly distributed random number).  The last value of g used is the gaussian coordinate sought.

The idea here is that the integration over the guassian distribution gives the probability of occurence of coordinate less than or equal to g.  We simply sum here as our approximate integration.

This technique can be applied to any distribution you need, not just the gaussian.
0
 
LVL 7

Expert Comment

by:wytcom
ID: 12184553
Oops:  

Generate a uniformly distributed number x where  0 <= u < 1

   should be

Generate a uniformly distributed number u where  0 <= u < 1
0
 
LVL 7

Expert Comment

by:wytcom
ID: 12190933
Oops:

Continue this summation until the sum is greater than or equal to u (your uniformly distributed random number).

  should be

Continue this summation until the sum*dg is greater than or equal to u (your uniformly distributed random number).
0

Featured Post

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Discrete Values 2 63
Percentage calculation 4 67
Math Stumper 6 59
China bladeless fan : comment on quality & blowing strength & noise level 4 98
We are taking giant steps in technological advances in the field of wireless telephony. At just 10 years since the advent of smartphones, it is crucial to examine the benefits and disadvantages that have been report to us.
Article by: Nicole
This is a research brief on the potential colonization of humans on Mars.
This is a video describing the growing solar energy use in Utah. This is a topic that greatly interests me and so I decided to produce a video about it.
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…

696 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question