Public Group

# Rand() question

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

## Recommended Posts

ok i feel stupid asking this but im calling srand(3); X=rand()%3; and i get the same think everytime why?

##### Share on other sites
If you use the same seed every time, you will get the same result. Usually people pass the current time to srand.

##### 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 on other sites
you should only call srand() one time

##### Share on other sites
i need a number 0-2 as a rand # when i do this rand()%2 it gives me the same think still. grrr!

##### 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 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 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 on other sites
That's not portable. time(NULL) is better.

##### Share on other sites
cool it works thanks guys[grin] btw im using SDL so its SDL_GetTicks for me ;)

1. 1
2. 2
Rutin
19
3. 3
4. 4
frob
13
5. 5

• 9
• 18
• 11
• 9
• 17
• ### Forum Statistics

• Total Topics
632605
• Total Posts
3007371

×