• Advertisement
Sign in to follow this  

Rand() question

This topic is 4848 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Advertisement
If you use the same seed every time, you will get the same result. Usually people pass the current time to srand.

Share this post


Link to post
Share on other sites
That's correct.

srand() initialises your random number generator to a specific seed. So subsequent calls to rand() will always return the same sequence of numbers when the same seed was used.

You can feed the current time or some other really random value to srand() to have a unique chain of random numbers.

Share this post


Link to post
Share on other sites
When in doubt, read the specifications of the function in question.
(or as we used to say, RTFM :).)

A good place to look is MSDN:

rand()
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_rand.asp

srand()
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_srand.asp

[EDIT]
I noticed you also seem to be having problems with the % (modulus) operator.

What it does is return the remainder of a division between two numbers.

EG: 10 % 10 gives zero, as ten divides ten evenly.
Wheras 10 % 5 yields 5.
[/EDIT]
- Jacob

Share this post


Link to post
Share on other sites
If I remember correctly, to get a number between 0 and n, use

rand() % (n + 1)

Also, to seed with time, I usually use:

srand((UINT)time(NULL));

Share this post


Link to post
Share on other sites
I think the proper funcion to get the time would be GetTickCount.

edit: It doesn't get the time, but rather the number of milliseconds elapsed since the program began execution. This will never (very seldom) be the same, even on the same macine with no other tasks running.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement