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; } |
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; } |
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; } |
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