This is the mail archive of the
cygwin@sourceware.cygnus.com
mailing list for the Cygwin project.
Re: about pseudo-random numbers
- To: c9707059 at cca dot fc dot up dot pt (Valter EOR Santos)
- Subject: Re: about pseudo-random numbers
- From: kkont at estia dot iit dot nrcps dot ariadne-t dot gr (Kimon Kontovasilis)
- Date: Thu, 15 Jan 1998 17:27:06 +0200 (EET)
- Cc: gnu-win32 at cygnus dot com
>
> Hi!
> I am a newby in this mailing list...
> I am generate a program code that need random number generation...
> My question is if there is any way to make a limit in the random
> generation. In the Turbo Borland C++ i have the unit random(int limit)
> that produces numbers between 0 and limit. In the gnu, or other linux
> compiler i only have the rand() or srand() units that produces numbers
> between 0 and a pre-defined random_limit variable MAX_RAND (or something
> like that). How i can generate code for resolving my problem???
>
> _________________________
> Valter Santos
> <c9707059@cca.fc.up.pt>
>
The following simple solution works in most cases and preserves the statistical
properties of the standard rand() up to double precision conversions.
#include <stdlib.h>
int range_rand(int limit)
{
return (((double) rand() / RAND_MAX) * limit);
}
It is important to have the division performed in double precision *before*
multiplying by limit and returning as an integer.
As is, the routine will return values between 0 and limit-1 inclusive. Should
you want values from 1 to limit (or offset by any other number, for that
matter), save the expression returned above to an integer (or apply a cast)
and return the result plus the offset.
Initializing (or re-initializing) the seed, is obviously done with the
standard srand() routine.
Regards,
Kimon Kontovasilis.
-----------------------
Dr. Kimon Kontovasilis,
National Center for Scientific Research "Demokritos",
Inst. for Informatics & Telecommunications.
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".