How do I generate a random number in C++ with a set range?

Started by
5 comments, last by WhoStoleMyNick 24 years, 8 months ago
Well you would first want to include
srand(time(NULL));
to seed you number in you initialization and then whenever you want a new number you would call
int newrandomnum = rand() % num;
This will produce a number from 0 to num - 1.
You have to #include <time.h> for time and I think stdlib.h for the rand() though I'm not to sure.
Big Daddy Scat
Advertisement
int RandRange(int lo,int hi)
{
return(rand()%(hi-lo+1)+lo);
}

Get off my lawn!

2+2=4
If you want to generate a random integer between 1 and 10, you should always do it by

j=1+(int) (10.0*rand()/(RAND_MAX+1.0));


the rand()%x function only uses lower-order bits and will generate a much LESS random number( Numbers are never completely random in computers ) then the first method.

Yeah it seems much more complex, but just through it in a function.

On the otherhand if you don't really care how random the numbers really are and thats not important to you, the simpler way will work.

------------------
Gary
Midnights Dawning Software
http://dawning.dhs.org


Gary
Midnights Dawning Software
http://dawning.dhs.org


Darvith is right, and most good manuals will suggest the floating point random number method.

The following macro will return a random number between min(inclusive) and max(exclusive):


#define randomRange(min, max) ( (int)(min + (max-min)*rand()/(RAND_MAX+1.0)) )

randomRange(1, 10) will then return a random integer between 1 and 10.
You will also need to #include and call srand(time(NULL)); as mentioned by others. #include is not strictly necessary, since you are not using the time_t structure in the call to time().

Regards,

White Fire

Hello, I'm making a program in C++ that has to generate a random number within a set range. (the bottom number could be higher than 0) How do I do it?

------------------
|
|/
|\evin Clancy

|
|/
|evin Clancy
That is, you will need to #include stdlib.h, but time.h is not strictly necessary.

White Fire

This topic is closed to new replies.

Advertisement