The srand()
function in C++ seeds the pseudo-random number generator used by the rand()
function. It is defined in the cstdlib header file.
Example
#include<iostream>
#include<cstdlib>
using namespace std;
int main() {
// set seed to 10
srand(10);
// generate random number
int random = rand();
cout << random;
return 0;
}
// Output: 71
srand() Syntax
The syntax of srand()
is:
srand(unsigned int seed);
srand() Parameters
The srand()
function takes the following parameter:
- seed - a seed value of type
unsigned int
srand() Return value
The srand()
function doesn't return any value.
srand() Prototype
The prototype of srand()
as defined in the cstdlib header file is:
void srand(unsigned int seed);
Here, the srand()
parameter seed is used as seed by the rand()
function.
Working of C++ srand()
The srand()
function sets the seed for the rand()
function. The seed for rand()
function is 1 by default.
It means that if no srand()
is called before rand()
, the rand()
function behaves as if it was seeded with srand(1)
.
However, if an srand()
function is called before rand, then the rand()
function generates a number with the seed set by srand()
.
Note: A "seed" is the starting point for a sequence of pseudo-random numbers. To learn more, visit this link in StackOverflow.
Example 1: C++ srand()
#include<iostream>
#include<cstdlib>
using namespace std;
int main() {
int random = rand();
// srand() has not been called), so seed = 1
cout << "Seed = 1, Random number = " << random << endl;
// set seed to 5
srand(5);
// generate random number
random = rand();
cout << "Seed = 5, Random number = " << random << endl;
return 0;
}
Output
Seed = 1, Random number = 41 Seed = 5, Random number = 54
srand() Standard Practices
- The pseudo-random number generator should not be seeded every time we generate a new set of numbers i.e. it should be seeded only once at the beginning of the program, before any calls of
rand()
. - It is preferred to use the result of a call to
time(0)
as the seed. Thetime()
function returns the number of seconds since 00:00 hours, Jan 1, 1970 UTC (i.e. the current unix timestamp).
As a result, the value of seed changes with time. So every time we run the program, a new set of random numbers is generated.
Example 2: srand() with time()
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main() {
// set seed to time(0)
srand(time(0));
// generate random number
int random = rand();
// print seed and random number
cout << "Seed = " << time(0) << endl;
cout << "Random number = " << random;
return 0;
}
Output
Seed = 1629892833 Random number = 5202