Рубрики

Генерация тестовых случаев (generate () и generate_n () в C ++)

Генерация тестовых случаев для программ массива может быть громоздким процессом. Но функции generate и generate_n в STL (Стандартная библиотека шаблонов) удобны для заполнения массива случайными значениями.

  • генерируют ()

    Генерирующие функции присваивают случайные значения, предоставленные вызовом функции генератора 'gen' для элементов в диапазоне [начало, конец). Обратите внимание, что начало включено в диапазон, но конец не включен.

    Следующий код демонстрирует реализацию создания:

    // C ++ программа для демонстрации функции генерации в STL
    #include <bits/stdc++.h>     

    using namespace std;

      
    // функция для генерации случайных чисел в диапазоне [0-999]:

    int randomize() 

    {   

        return (rand() % 1000); 

    }

      

    int main () 

    {

      // для разных значений каждый раз, когда мы запускаем код

      srand(time(NULL)); 

        

      vector<int> vect(10); // объявляем вектор

      

      // Заполняем все элементы с помощью randomize ()

      generate(vect.begin(), vect.end(), randomize);

      

      // отображение содержимого вектора

      for (int i=0; i<vect.size(); i++)

         cout << vect[i] << " " ;

        

      return 0;

    }

    Выход :

    832 60 417 710 487 260 920 803 576 58
    

    ПРИМЕЧАНИЕ. Вывод будет отличаться при каждом запуске кода из-за srand. Если мы удалим srand, мы получим один и тот же набор случайных чисел при каждом запуске кода.

  • generate_n ()
    Generate_n выполняет ту же работу, что и генерация до n элементов, начиная с элемента, на который указывает начальный итератор.

    Следующий код демонстрирует работу generate_n:

    // C ++ программа для демонстрации функции generate_n () в STL
    #include <bits/stdc++.h>    

    using namespace std;

      
    // функция для генерации случайных чисел в диапазоне [0-999]:

    int randomize() 

    {   

        return (rand() % 1000); 

    }

      

    int main () 

    {

      // для разных значений каждый раз, когда мы запускаем код

      srand(time(NULL)); 

        

      vector<int> vect(10); // объявляем вектор

      

      // Заполняем 6 элементов от начала с помощью randomize ()

      generate_n(vect.begin(), 6, randomize);

      

      // отображение содержимого вектора

      for (int i=0; i<vect.size(); i++)

        cout << vect[i] << " " ;

        

      return 0;

    }

    Выход :

    177 567 15 922 527 4 0 0 0 0
    

    ПРИМЕЧАНИЕ. Здесь также вывод будет разным при каждом запуске кода из-за srand. Если мы удалим srand, мы получим один и тот же набор случайных чисел при каждом запуске кода.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Генерация тестовых случаев (generate () и generate_n () в C ++)

0.00 (0%) 0 votes