Как изменить srand () во время выполнения

я использую srand() с фиксированным начальным числом, и мне нужно выполнить тесты с набором различных начальных значений, таких как 100, 200, 300, …, 1000, все в одном исполнении. Это возможно? Дело в том srand() определяется в начале main, поэтому я не знаю, как управлять начальным числом с помощью переменной.

0

Решение

Вы можете использовать srand (time (NULL)) и включить заголовок time.h. Он инициализирует srand () с текущим системным временем. Надеюсь, поможет. !!

3

Другие решения

Если модульный тест проверяет код, который использует rand (), вам следует вызвать srand(<const>) как часть настройки теста.

Таким образом, тест ведет себя так же, как если бы он был частью пакета, выполняются независимо.

0

Можно ожидать, что для каждого другого начального значения, используемого при обращении к 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
0
По вопросам рекламы [email protected]