开发者

example algorithm for generating random value in dataset with normal distribution?

开发者 https://www.devze.com 2023-01-20 05:04 出处:网络
I\'m trying to generate some random numbers with simple non-uniform probability to mimic lifelike data for testing purposes.I\'m looking for a function that accepts mu and sigma as parameters and retu

I'm trying to generate some random numbers with simple non-uniform probability to mimic lifelike data for testing purposes. I'm looking for a function that accepts mu and sigma as parameters and returns x where the probably of x being within certain ranges follows a standard bell curve, or thereabouts. It needn't be super precise or even efficient. The resulting dataset needn't match the exact mu and sigma that I set. I'm just looking for a relatively simple non-uniform random number generator. Limiting the set of possible 开发者_如何学Goreturn values to ints would be fine. I've seen many suggestions out there, but none that seem to fit this simple case.


Box-Muller transform in a nutshell:

First, get two independent, uniform random numbers from the interval (0, 1], call them U and V.

Then you can get two independent, unit-normal distributed random numbers from the formulae

X = sqrt(-2 * log(U)) * cos(2 * pi * V);
Y = sqrt(-2 * log(U)) * sin(2 * pi * V);

This gives you iid random numbers for mu = 0, sigma = 1; to set sigma = s, multiply your random numbers by s; to set mu = m, add m to your random numbers.


My first thought is why can't you use an existing library? I'm sure that most languages already have a library for generating Normal random numbers.

If for some reason you can't use an existing library, then the method outlined by @ellisbben is fairly simple to program. An even simpler (approximate) algorithm is just to sum 12 uniform numbers:

X = -6 ## We set X to be -mean value of 12 uniforms
for i in 1 to 12:
   X += U

The value of X is approximately normal. The following figure shows 10^5 draws from this algorithm compared to the Normal distribution.

example algorithm for generating random value in dataset with normal distribution?

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号