Funkcja rand() zwraca pseudolosową liczbę całkowitą z zakresu 0....RAND_MAX, gdzie maksimum to pewna stała zależna od kompilatora.
Nie możesz zmienić wartości RAND_MAX, ale górny zakres możesz łatwo ograniczyć używając operatora dzielenia modulo.
rand() % A --> 0, 1, 2,..., A-1
Żeby zmienić dolny zakres - wystarczy do wyniku dodać wartość początkową
B + rand() % A --> B, B+1, ..., A+B-1
Jeśli chcesz mieć liczby z zakresu od 1000 do 9999 włącznie, to podstawiasz do powyższego
B = 1000
A+B-1 = 9999 --> A=10000-B = 9000
Czyli efekt który chcesz uzyskać da Ci wyrażenie
1000 + rand() % 9000
To co napisałem to rozwiązanie tradycyjnie uczone na podstawach programowania, ale niekoniecznie dobre z punktu widzenia statystycznych właściwości tak uzyskanych wartości pseudolosowych... @fasadin podał lepsze rozwiązanie (jeśli możesz użyć C++11). Jeśli musisz pisać w C i chciałbyś wiedzieć dlaczego to rozwiązanie może być złe, to przeczytaj dokładnie dokumentację funkcji rand().