Generating Test Cases (generate() and generate_n() in C++)

29 May, 2017
Generating test cases for array programs can be a cumbersome process. But the generate and generate_n functions in the STL (Standard Template Library), come handy to populate the array with random values.
generate()The generate functions assigns random values provided by calling the generator function ‘gen’ to the elements in the range [begin, end). Notice that begin is included in the range but end is NOT included.Following code demonstrates the implementation of generate :// C++ program to demonstrate generate function in STL#include <bits/stdc++.h>     using namespace std;  // function to generate random numbers in range [0-999] :int randomize() {       return (rand() % 1000); }  int main () {  // for different values each time we run the code  srand(time(NULL));       vector<int> vect(10); // declaring the vector    // Fill all elements using randomize()  generate(vect.begin(), vect.end(), randomize);    // displaying the content of vector  for (int i=0; i<vect.size(); i++)     cout << vect[i] << " " ;      return 0;}Output :832 60 417 710 487 260 920 803 576 58
NOTE : The output would be different each time we run the code because of srand. If we remove srand, we would get the same set of random numbers every time we run the code.
The generate functions assigns random values provided by calling the generator function ‘gen’ to the elements in the range [begin, end). Notice that begin is included in the range but end is NOT included.
Following code demonstrates the implementation of generate :
// C++ program to demonstrate generate function in STL#include <bits/stdc++.h>     using namespace std;  // function to generate random numbers in range [0-999] :int randomize() {       return (rand() % 1000); }  int main () {  // for different values each time we run the code  srand(time(NULL));       vector<int> vect(10); // declaring the vector    // Fill all elements using randomize()  generate(vect.begin(), vect.end(), randomize);    // displaying the content of vector  for (int i=0; i<vect.size(); i++)     cout << vect[i] << " " ;      return 0;}
Output :
832 60 417 710 487 260 920 803 576 58

NOTE : The output would be different each time we run the code because of srand. If we remove srand, we would get the same set of random numbers every time we run the code.
 
generate_n()The generate_n does the same job as generate upto n elements starting from the element pointed to by the begin iterator. The following code demonstrates the working of generate_n :// C++ program to demonstrate generate_n() function in STL#include <bits/stdc++.h>    using namespace std;  // function to generate random numbers in range [0-999] :int randomize() {       return (rand() % 1000); }  int main () {  // for different values each time we run the code   srand(time(NULL));       vector<int> vect(10); // declaring the vector    // Fill 6 elements from beginning using randomize()  generate_n(vect.begin(), 6, randomize);    // displaying the content of vector  for (int i=0; i<vect.size(); i++)    cout << vect[i] << " " ;      return 0;}Output :177 567 15 922 527 4 0 0 0 0
NOTE : Here also, the output would be different each time we run the code because of srand. If we remove srand, we would get the same set of random numbers every time we run the code.
// C++ program to demonstrate generate_n() function in STL#include <bits/stdc++.h>    using namespace std;  // function to generate random numbers in range [0-999] :int randomize() {       return (rand() % 1000); }  int main () {  // for different values each time we run the code   srand(time(NULL));       vector<int> vect(10); // declaring the vector    // Fill 6 elements from beginning using randomize()  generate_n(vect.begin(), 6, randomize);    // displaying the content of vector  for (int i=0; i<vect.size(); i++)    cout << vect[i] << " " ;      return 0;}
Output :
177 567 15 922 527 4 0 0 0 0

NOTE : Here also, the output would be different each time we run the code because of srand. If we remove srand, we would get the same set of random numbers every time we run the code.
 Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
CPP-Library
STL
C Language
C++
Competitive Programming
STL
CPP
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.