Velocity Reviews > Java > Generating semi random numbers

Generating semi random numbers

Matt Krevs
Guest
Posts: n/a

 08-10-2006
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
Guest
Posts: n/a

 08-10-2006
Ahh.

Found a couple of posts to refresh my memory
http://en.wikipedia.org/wiki/Normal_distribution

"Matt Krevs" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> 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
>
> Thanks
>

Boris Stumm
Guest
Posts: n/a

 08-10-2006
Matt Krevs wrote:
> 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
Guest
Posts: n/a

 08-10-2006
On Thu, 10 Aug 2006 07:00:08 +0100, Matt Krevs
<(E-Mail Removed)> wrote:

> 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

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.

--
Daniel Dyer
http://www.dandyer.co.uk

Simon
Guest
Posts: n/a

 08-10-2006
Daniel Dyer schrieb:
> On Thu, 10 Aug 2006 07:00:08 +0100, Matt Krevs
> <(E-Mail Removed)> wrote:
>
>> 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.

>
> 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;

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
Guest
Posts: n/a

 08-10-2006
Simon wrote:
> Daniel Dyer schrieb:
> > On Thu, 10 Aug 2006 07:00:08 +0100, Matt Krevs
> > <(E-Mail Removed)> wrote:
> >
> >> 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.

> >
> > 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;

>
> 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

Before anyone rushes to use this, perhaps you could check the problems

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
Guest
Posts: n/a

 08-10-2006
http://www.velocityreviews.com/forums/(E-Mail Removed) schrieb:
> Simon wrote:
>> Daniel Dyer wrote:

>> http://dsd.lbl.gov/~hoschek/colt/
>>
>> Cheers,
>> Simon

>
> Before anyone rushes to use this, perhaps you could check the problems

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
Guest
Posts: n/a

 08-10-2006
"Matt Krevs" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> 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

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