⭐ in reply to How do I get random numbers that follow standard distribution?
I looked for Math::Random on CPAN and couldn't find it. There are modules for random numbers, such as Crypt::TrulyRandom, but I believe they will only give you better uniformly distributed random variables (correct me if I'm wrong). For a normal distribution, you can use Math::CDF (Cumulative Distribution Functions). The relevant function is Math::CDF::qnorm(), which will give you what you want when fed a random number x, 0<x<1, with a uniform distribution (i.e., what you get from rand()). (It supposedly returns a value for the inputs x=1 and x=0, but I don't know what those values could be, you'll have to try it).
So the function you want is:
$myrand = qnorm(rand());
(or replace rand() with your function of choice).
One caveat: I don't know how the Math::CDF module calculates these values. If it provides more precision than you need, it could be a big waste of processing time. In that case lhoward and tilly's solution, summing several random variables, works fine. It would be nice to have bounds for the errors, but I can't help you there. Calculate, experiment, or find a reference.... Perhaps this would be a good place to post the results.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
RE: Answer: How do I get random numbers that follow standard distribution?
by tilly (Archbishop) on Aug 10, 2000 at 15:55 UTC | |
|
Erratum
by grackle (Acolyte) on Aug 09, 2000 at 07:46 UTC |