srand ()
Как уже упоминали другие.srand () запускает генератор случайных чисел.Это в основном означает, что он устанавливает начальную точку для последовательности случайных чисел.Поэтому в реальном приложении вы хотите вызвать его один раз (обычно это первое, что вы делаете в main (сразу после установки локали)).
int main()
{
srand(time(0));
// STUFF
}
Теперь, когда вам нужно случайное число, просто вызовите rand ().
Юнит-тесты
Переход к юнит-тестированию.В этой ситуации вам не нужны случайные числа.Недетерминированные юнит-тесты - пустая трата времени.Если не получится, как вы воспроизведите результат, чтобы исправить его?
Вы все еще можете использовать rand () в модульных тестах.Но вы должны инициализировать его (с помощью srand ()), чтобы модульные тесты ВСЕГДА получали те же значения при вызове rand ().Поэтому настройка теста должна вызывать srand (0) перед каждым тестом (или некоторой константой, отличной от 0).
Причина, по которой вам нужно вызывать ее перед каждым тестом, заключается в том, что при вызове фреймворка модульного теставыполнить только один тест (или один набор тестов), они все еще используют те же случайные числа.