Generate Random Numbers in a Range

Suppose there are two numbers a and b, we want to generate a random number between them [a, b) 

1. Generate Random Integer in a Range

Example:

C++




// C++ program to generate random integers
#include <bits/stdc++.h>
 
using namespace std;
 
int randomInt(int a, int b)
{
    if (a > b)
        return randomInt(b, a);
    if (a == b)
        return a;
    return a + (rand() % (b - a));
}
 
signed main()
{
    // seeds the generator
    srand(time(0));
 
    // generate random integers in a range [ Min , Max )
    for (int i = 0; i < 5; i++) {
        cout << randomInt(10, 20) << " ";
    }
 
    return 0;
}


Output

16 17 16 10 14 

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

Now we can use this same concept to generate a random float number in a range 

2. Generate Random Float Numbers in a Range

Example:

C++




// C++ program to generate random float numbers
#include <bits/stdc++.h>
 
using namespace std;
 
float randomFloat()
{
    return (float)(rand()) / (float)(RAND_MAX);
}
 
int randomInt(int a, int b)
{
    if (a > b)
        return randomInt(b, a);
    if (a == b)
        return a;
    return a + (rand() % (b - a));
}
 
float randomFloat(int a, int b)
{
    if (a > b)
        return randomFloat(b, a);
    if (a == b)
        return a;
 
    return (float)randomInt(a, b) + randomFloat();
}
 
signed main()
{
 
    // seeds the generator
 
    srand(time(0));
 
    // generate random float numbers in a
    // range [ Min , Max)
    for (int i = 0; i < 5; i++) {
        cout << randomFloat(10, 20) << "\n";
    }
 
    return 0;
}


Output

10.859
19.3532
13.1625
18.3262
16.2245

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

Wrap Up:

Let us wrap up all the things in one example.

Example:

C++




// C++ program to generate random numbers
#include <bits/stdc++.h>
 
using namespace std;
 
class Random {
public:
    // constructor
    Random()
    {
        // seeds the generator
        srand(time(0));
    }
 
    // generate random integer
    int randomInt() { return rand(); }
 
    // generate random integer in a range [Min , Max)
    int randomInt(int a, int b)
    {
        if (a > b)
            return randomInt(b, a);
        if (a == b)
            return a;
        return a + (rand() % (b - a));
    }
 
    // generate random fraction
 
    float randomFloat()
    {
        return (float)(rand()) / (float)(RAND_MAX);
    }
 
    // generate random float in a range
    float randomFloat(int a, int b)
    {
        if (a > b)
            return randomFloat(b, a);
        if (a == b)
            return a;
 
        return (float)randomInt(a, b) + randomFloat();
    }
};
 
signed main()
{
 
    Random random = Random();
 
    // random integer
    cout << random.randomInt() << "\n";
 
    // random integer in a range
    cout << random.randomInt(10, 15) << "\n";
 
    // random  float (fraction)
    cout << random.randomFloat() << "\n";
 
    // random float in range
    cout << random.randomFloat(10, 15) << "\n";
 
    return 0;
}


Output

1504136767
12
0.204022
13.5138

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



Generate a Random Float Number in C++

Random floating numbers can be generated using 2 methods:

  • Using rand()
  • Using uniform real distribution

Similar Reads

1. Use of rand()

We can generate random integers with the help of the rand() and srand() functions. There are some limitations to using srand() and rand(). To know more about the srand() and rand() functions refer to srand() and rand() in C++....

2. Generate Random Float Numbers Using the “uniform real distribution ” method

...

Generate Random Numbers in a Range

...

Contact Us