How to Generate Random Number in Range in C++?

In C++, we have a <random> header that consists of standard library facilities for random number generation. In this article, we will learn how to generate a random number in range in C++.

Example:

Input: 
Range: 1 to 20

Output: 
Random number between 1 and 20 is: 18

Generating a Random Number in a Range in C++

To generate a random number in a range we have to make use of <random> library functionalities by following the below approach:

Approach:

  • Get a seed for the random number engine by creating a random_device rd object.
  • Seed an mt19937 object with the rd.
  • Now, create a uniform_int_distribution<> object. This models a random number generator that produces uniformly distributed integers within a specified range. Pass the minimum and maximum values of the range as parameters.
  • Call the distributor by passing the generator as a parameter to it to get a generated random number in a range.

C++ Program to Generate a Random Number in a Range 

The below program demonstrates how we can generate a random number in a given range in C++.

C++
// C++ program to generate a random number in a range

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

int main()
{
    // Define range
    int min = 1;
    int max = 20;

    // Initialize a random number generator
    random_device rd;
    mt19937 gen(rd());
    uniform_int_distribution<> distrib(min, max);

    // Generate random number in the range [min, max]
    int randomValue = distrib(gen);
    cout << "Random number between " << min << " and "
         << max << " is " << randomValue << endl;

    return 0;
}

Output
Random number between 1 and 20 is 18

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