Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / August 2006

Tip: Looking for answers? Try searching our database.

Generating semi random numbers

Thread view: 
Matt Krevs - 10 Aug 2006 07:00 GMT
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

:)


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.