How srand() and rand() are related to each other?

srand() sets the seed which is used by rand to generate “random” numbers. If you don’t call srand before your first call to rand, it’s as if you had called srand(1) to set the seed to one. 
In short, srand() — Set Seed for rand() Function



rand() and srand() in C++

rand() function is an inbuilt function in C++ STL, which is defined in header file <cstdlib>. rand() is used to generate a series of random numbers. The random number is generated by using an algorithm that gives a series of non-related numbers whenever this function is called. The rand() function is used in C++ to generate random numbers in the range [0, RAND_MAX).

RAND_MAX: It is a constant whose default value may vary between implementations but it is granted to be at least 32767.

Syntax of rand()

int rand(void);

Parameters of rand()

  • This function does not take any parameters.

Return Value of rand()

  • rand() returns a pseudo-random number in the range of [0, RAND_MAX).

Say, we are generating 5 random numbers in C++ with the help of rand() in a loop, then every time we compile and run the program our output must be the same sequence of numbers.

Example of rand()

C++




// C++ program to demonstrate
//  the use of rand()
#include <cstdlib>
#include <iostream>
using namespace std;
  
int main()
{
    // This program will create some sequence of
    // random numbers on every program run
    for (int i = 0; i < 5; i++)
        cout << rand() << " ";
  
    return 0;
}


Output

1804289383 846930886 1681692777 1714636915 1957747793 

Complexity of rand() function

The time complexity and space complexity of the rand() function are as follows:

  • Time Complexity: O(1)
  • Auxiliary Space Complexity: O(1)

Note: This program will create same sequence of random numbers on every program run.

The below program is the implementation of the rand() function to get a value from the range 0 to N-1

C++




// C++ program to demonstrate the
// use of rand() to get value
// in a range of 0 to N-1
#include <cstdlib>
#include <iostream>
using namespace std;
  
int main()
{
    int N = 100;
    // This program will create some sequence of random
    // numbers on every program run within range 0 to N-1
    for (int i = 0; i < 5; i++)
        cout << rand() % N << " ";
  
    return 0;
}
  
// This code is contributed by Susobhan Akhuli


Output

83 86 77 15 93 

The below program is the implementation of the rand() function to get a value from Upper_Bound to Lower_Bound.

C++




// C++ program to demonstrate 
// the use of rand() to get value
// in a range of lb to ub
#include <cstdlib>
#include <iostream>
using namespace std;
  
int main()
{
    int lb = 20, ub = 100;
    // This program will create some sequence of random
    // numbers on every program run within range lb to ub
    for (int i = 0; i < 5; i++)
        cout << (rand() % (ub - lb + 1)) + lb << " ";
  
    return 0;
}
  
// This code is contributed by Susobhan Akhuli


Output

66 90 38 99 88 

Similar Reads

srand()

...

How srand() and rand() are related to each other?

...