Public Group

# Random numbers in C

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

## Recommended Posts

hi, I've been trying to generate random numbers in C, i've looked at a few online examples, such as the one here: http://wakish.info/?p=19 However on the line where it says random = random(100); I get the compiler error: Parse Error, expecting '}'' 'int' if someone could do a quick example of generating a simple number 1 to 10 i'd appriciate it, or point me in the right direction. thanks

##### Share on other sites
The code example doesn't make any sense. Look at the man page for rand().

##### Share on other sites
The variable name collides with the function name, change that.

That's how you do it.

#include <stdio.h>#include <time.h>#include <stdlib.h>int main(void){	srand((unsigned)time(0));	int random = rand() % 10; // 0 - 9	printf("random = %d", random);		getchar();	return 0;}

##### Share on other sites
In C, you can use a combination of the functions rand(), srand(), time() and the constant RAND_MAX to do what you need.

These numbers are pseudo random, the same seed will produce the same sequence of numbers. So the first thing you will do is call srand(). To ensure the seed is different every time, use the time() function. Note: a single call to srand() somewhere near the start of the program is all you need. Don't call srand() repeatedly.

Then, a call to rand() will generate a number from 0 to RAND_MAX. There are two common ways to narrow down the range, the mod operator and some floating point arithmetic. While for most applications the mod operator works fine, it does give a greater bias to the lower bits of the random numbers, which may not have the same randomness as the full number.
#include <time.h>#include <stdlib.h>int random_int(int low, int high){    int range = high - low;    float r = rand() / (float)RAND_MAX;    return (int)(r * range) + low;}int main(){    srand(time(NULL));    while(1)    {       printf("Your random number is: %d\n", random_int(1,10));       getch();    }}`

You can easily change random_int to random_float by replacing "int" with "float".

##### Share on other sites
thanks everyone, I got it now

##### Share on other sites
When you seed a random number using time, your number changes every second. Is there are different way to seed random from something that changes every time use it?

##### Share on other sites
Quote:
 Original post by HeartlessWhen you seed a random number using time, your number changes every second. Is there are different way to seed random from something that changes every time use it?

srand() is only called once, before the first use of rand(). rand() will give you a new number every time you call it.

##### Share on other sites
Quote:
 Original post by HeartlessWhen you seed a random number using time, your number changes every second. Is there are different way to seed random from something that changes every time use it?

The point of seeding is to do it only once. That's why it's called seeding; you plant the seed, and the whole stream of random numbers grows from there. (If there *were* a way of giving a seed number each time, such that you got good random numbers out, you could just use the seed numbers directly as a random number stream.)

1. 1
Rutin
25
2. 2
JoeJ
20
3. 3
4. 4
5. 5

• 9
• 9
• 46
• 41
• 23
• ### Forum Statistics

• Total Topics
631750
• Total Posts
3002052
×