Почему функция rand() возвращает одно и то же значение?
небыла
не было.
Даже так?while(true)
std::cout << rand() << std::endl;
Почитайте про генераторы псевдослучайных чисел, вероятно вы не меняете seed, поэтому генератор при каждом запуске выдаёт то же значение. 
В простейшем случае нужно в начале программы делать srand(time(0));
Это инициализирует псевдослучайную последовательность текущим временем(количество секунд с 1 января 1970)
По-тому что seed все время одинаковый. (и, к стати, это крайне удобно для отладки).This number is generated by an algorithm that returns a sequence of apparently non-related numbers each time it is called. This algorithm uses a seed to generate the series, which should be initialized to some distinctive value using function srand.
www.cplusplus.com/reference/cstdlib/rand