Функция rand() без инициализации приводит к одинаковым последовательностям чисел, потому что по умолчанию она автоматически заполняется значением 1. 13
Это означает, что начальная точка алгоритма всегда одна и та же, поэтому для каждого вызова генерируется одинаковая последовательность чисел. 1
Чтобы получить разные последовательности, нужно установить начальное значение генератора случайных чисел с помощью функции srand(). 14 Например, можно установить начальное значение в текущее время или идентификатор процесса: srand(time(NULL)); или srand(getpid()); при запуске программы. 1
Также для решения проблемы srand() нужно вызывать один раз, а не каждый раз перед вызовом rand(). 2