я использую srand(
) с фиксированным начальным числом, и мне нужно выполнить тесты с набором различных начальных значений, таких как 100, 200, 300, …, 1000, все в одном исполнении. Это возможно? Дело в том srand()
определяется в начале main, поэтому я не знаю, как управлять начальным числом с помощью переменной.
Вы можете использовать srand (time (NULL)) и включить заголовок time.h. Он инициализирует srand () с текущим системным временем. Надеюсь, поможет. !!
Если модульный тест проверяет код, который использует rand (), вам следует вызвать srand(<const>)
как часть настройки теста.
Таким образом, тест ведет себя так же, как если бы он был частью пакета, выполняются независимо.
Можно ожидать, что для каждого другого начального значения, используемого при обращении к srand, генератор псевдослучайных чисел будет генерировать различную последовательность результатов в последующих вызовах rand.
Две разные инициализации с одним и тем же начальным числом дают команду псевдослучайному генератору генерировать одинаковую последовательность результатов для последующих вызовов rand в обоих случаях.
Это может проиллюстрировать:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ()
{
printf ("First number: %d\n", rand() % 100);
srand ( time(NULL) );
printf ("Random number: %d\n", rand() % 100);
srand ( 1 );
printf ("Again the first number: %d\n", rand() %100);
srand ( time(NULL) );
printf ("Random number: %d\n", rand() % 100);
printf ("Random number: %d\n", rand() % 100);
printf ("Random number: %d\n", rand() % 100);
printf ("Random number: %d\n", rand() % 100);
return 0;
}
выход:
First number: 41
Random number: 76
Again the first number: 41
Random number: 76
Random number: 14
Random number: 74
Random number: 41
Press any key to continue