Hi all
I'm doing some load testing and want to generate some numbers within a given
range. My problem is that I want most of the numbers to be close to the
middle, and only some at either high or low ends of the spectrum
eg if the range is 0-100, I want 70% of the numbers to be betwee 40 and 60.
From my vague memories from school maths, I kind of want to implement a bell
curve and use various standard deviation functionality. From my description
you can probably figire out I have fairly hazy recollections :)
Would someone be kind enough to direct me to a link that could give me more
information and/or some examples?
Thanks
Matt Krevs - 10 Aug 2006 07:10 GMT
Ahh.
Found a couple of posts to refresh my memory
http://forum.java.sun.com/thread.jspa?threadID=624504&start=0&tstart=0
http://en.wikipedia.org/wiki/Normal_distribution
> Hi all
>
[quoted text clipped - 14 lines]
>
> Thanks
Boris Stumm - 10 Aug 2006 08:36 GMT
> I'm doing some load testing and want to generate some numbers within a
> given range. My problem is that I want most of the numbers to be close to
> the middle, and only some at either high or low ends of the spectrum
>
> eg if the range is 0-100, I want 70% of the numbers to be betwee 40 and
> 60.
java.util.Random#nextGaussian() maybe?
Daniel Dyer - 10 Aug 2006 09:56 GMT
> Hi all
>
[quoted text clipped - 17 lines]
>
> Thanks
As Boris suggests, use the nextGaussian method of java.util.Random. This
gives you a distribution with a mean of zero and a standard deviation of
one. If you need to adjust the distribution, multiply by the required
standard deviation and add the required mean:
Random rng = new Random();
double value = rng.nextGuassian() * standardDeviation + mean;
Dan.

Signature
Daniel Dyer
http://www.dandyer.co.uk
Simon - 10 Aug 2006 10:22 GMT
Daniel Dyer schrieb:
>> Hi all
>>
[quoted text clipped - 13 lines]
> Random rng = new Random();
> double value = rng.nextGuassian() * standardDeviation + mean;
Note however, that this will not guarantee the result to be in any fixed
interval, like, e.g. 0-100, as the OP requested. Maybe you can specify your
requirements more precisely. The binomial distribution could be a good choice.
Several distributions are implemented in this library:
http://dsd.lbl.gov/~hoschek/colt/
Cheers,
Simon
iandjmsmith@aol.com - 10 Aug 2006 11:02 GMT
> Daniel Dyer schrieb:
> >
[quoted text clipped - 25 lines]
> Cheers,
> Simon
Before anyone rushes to use this, perhaps you could check the problems
discussed in this thread
http://groups.google.co.uk/group/comp.lang.java.programmer/browse_frm/thread/dff
ff3adce0b23f2
If the problems have been fixed or did not exist in the first place
then fine. Otherwise I think it needs some maintenance work done on it
before use.
Ian Smith
Simon - 10 Aug 2006 11:14 GMT
iandjmsmith@aol.com schrieb:
>> http://dsd.lbl.gov/~hoschek/colt/
>>
[quoted text clipped - 4 lines]
> discussed in this thread
> http://groups.google.co.uk/group/comp.lang.java.programmer/browse_frm/thread/dff
ff3adce0b23f2
Ooops, I didn't know that, thank you for this link. Then maybe one should rather
use the library mentioned in this other thread.
Cheers,
Simon
Luc The Perverse - 10 Aug 2006 17:21 GMT
> Hi all
>
[quoted text clipped - 12 lines]
> Would someone be kind enough to direct me to a link that could give me
> more information and/or some examples?
I don't know anything about nextGaussian like the other people suggested -
but if you could generate a curve of the probabilities of every location
that you want, and then integrate, you could solve for it and use a random
floating point number between 0 and 1. (This is fairly simply calculus.)
--
LTP
:)