Por que rand () produz a mesma sequência de números a cada execuçã

Toda vez que executo um programa comrand() me dá os mesmos resultados.

Exemplo:

#include <iostream>
#include <cstdlib>

using namespace std;

int random (int low, int high) {
    if (low > high) return high;
    return low + (rand() % (high - low + 1));
}
int main (int argc, char* argv []) {
    for (int i = 0; i < 5; i++) cout << random (2, 5) << endl;
}

Resultado

3
5
4
2
3

Cada vez que executo o programa, ele gera os mesmos números todas as vezes. Existe uma maneira de contornar isso?

questionAnswers(12)

yourAnswerToTheQuestion