rand() and srand() in C++

Last Updated : 22 May, 2026

rand() and srand() are commonly used in C++ for generating random numbers in programs. They help create different numeric values that are useful in games, simulations, testing, and many real-world applications.

  • Used to generate pseudo-random numbers in C++ programs
  • Commonly used in games, password generation, and simulations
  • Helps produce different outputs during program execution using a seed value

rand() Function

The rand() function is defined in the <cstdlib> or <stdlib.h> header file and is used to generate random numbers.

  • Does not take any parameters.
  • Returns a pseudo-random integer value.
  • Generates values in the range [0, RAND_MAX).
  • RAND_MAX value depends on the compiler.
  • Minimum guaranteed value of RAND_MAX is 32767.

Syntax

int rand()

C++
#include <bits/stdc++.h>
using namespace std;

int main() {
    for (int i = 0; i < 3; i++)
    
        // Generate random numbers
        cout << rand() << endl;
    return 0;
}

Output
1804289383
846930886
1681692777

srand() Function

The srand() function is used to initialize the seed value for the random number generator. Without srand(), the rand() function generates the same sequence of numbers every time the program runs.

  • rand() uses a deterministic algorithm.
  • Default seed value is generally 1.
  • Same seed produces the same sequence.
  • srand() changes the starting point of generation.
  • Helps generate different random sequences.

Syntax

void srand(unsigned int seed);

  • Parameters of srand(): The srand() function takes one parameter:
  • seed -> Integer value used to initialize the random number generator.
  • Return Value: The srand() function does not return any value.
C++
#include <bits/stdc++.h>
using namespace std;

int main() {

    // Use current time as seed for random generator
    srand(time(0));
    for (int i = 0; i < 3; i++)
        cout << rand() << endl;
    return 0;
}

Output
582797172
409020522
244217599

Random Numbers

Modern C++ introduced the <random> library in C++11 to provide better, safer, and more reliable random number generation compared to the traditional rand() function.

Limitations of rand()

The traditional rand() function has several limitations:

  • Produces deterministic sequences.
  • Lower randomness quality.
  • Limited distribution control.
  • Less suitable for modern applications.

Advantages of <random> Library

The <random> library provides more advanced random number generators.

  • Better randomness quality.
  • More uniform distribution.
  • Multiple random engines available.
  • Supports different probability distributions.
  • Preferred for modern C++ applications.

Common Engine in Modern C++

The mt19937 engine is one of the most commonly used random number generators in modern C++.

C++
#include <iostream>
#include <random>
using namespace std;

int main() {

    random_device rd;
    mt19937 gen(rd());

    cout << gen() << endl;

    return 0;
}

Applications of rand()

The rand() function is widely used in various programming applications.

rand() vs Modern Random Library

The following table compares rand() with the modern <random> library:

Featurerand()<random> Library
Introduced InC LanguageC++11
Randomness QualityBasicHigh
Distribution SupportLimitedMultiple distributions
Deterministic OutputYesYes (with better control)
Recommended for Modern AppsNoYes
Ease of UseSimpleMore flexible
Comment