Вам нужно заполнить генератор случайных чисел ONCE . Используйте srand()
с другим значением каждый раз, когда вам нужна другая последовательность.
В случае отсутствия посева, вы как бы выдали srand(1);
Как правило, ГСЧ засевается в main()
с текущим временем в качестве значения инициализации. Текущее время, возвращаемое time()
, почти гарантированно будет различным при каждом запуске программы (оно меняется один раз в секунду).
#include <stdlib.h>
#include <time.h>
int main(void) {
srand(time(0));
/* rest of program; no more calls to srand() */
return 0;
}
Обратите внимание, что если вы инициализируете ГСЧ с тем же номером, вы получите ту же последовательность. Это может быть интересно, например, повторить данные.
Обратите внимание, что на разных компьютерах один и тот же номер инициализации не должен генерировать одинаковые номера.