hi,
the random() function generates numbers between
0 and 1, distributed "linearly" (not sure this is the proper term
-> statistics was a while back .....). Meaning that if you run
Lastvalue(random()) a million times we would about get the same hits with
0.9 as with 0.3.
(0.5 - Random()) * 2 gives you a function
with numbers between -1 and 1 with a "linear"
distribution.
What I want is to generate random numbers
between -1 and 1 which do not have a "linear" distribution. They should
have some kind of Gaussian distribution where chances a number generated
near 0 is greater than a number generated neat -1 or 1.
I made this Gauss function (see below) but this
generates numbers with a standard deviation of 1 but does not have a high or
low number restriction. So I want the numbers to fluctuate randomly
between -1 and 1 but still have some form of Gauss function in them so that
a hit at 1 occurs less frequent than at 0.3.
thanks,
rgds, Ed
function gauss_func() {
w = 1;
while( w >= 1 ) {
x1 = 2.0 * LastValue(Random()) - 1;
x2 =
2.0 * LastValue(Random()) - 1;
w = x1
* x1 + x2 * x2;
}
w =
sqrt( (-2 * log(w)) / w );
y1 = x1 * w;
//y2 = x2 *
w;
return y1;
}
Please
note that this group is for discussion between users only.
To get
support from AmiBroker please send an e-mail directly to
SUPPORT {at}
amibroker.com
For other support material please check also:
http://www.amibroker.com/support.html