No it shouldn't. Having to be far from the previous number would be a less-random requirement. Your sample size is 3, certainly not enough to judge the quality of the randomness.
(rand() isn't perfectly uniform though, but that is not the issue here)
If you expected them, they aren't random. You don't understand what random means.
You think it means that each random number will be far away from the previous one. That's not true. That's not what random means. That's not how random numbers work.
It sounds to me like you don't want random numbers, but you want some numbers that are nicely spread out. Is that right?
If the program is run several times in succession, the seed value won't have changed by much, and (depending on the implementation) the first few random numbers may not vary by much either.
If that's a problem, it's worth adding an extra call (or several) to rand()to generate and discard the first number after a call to srand().
Here, srand() is called with values differing by just 1, the first randoms are not very random. An extra call to rand() seems to help.
Notice the first line of numbers just increase by a small amount in a fairly predictable fashion. The second set of numbers is less predictable.
edit: Note, this is for demonstration purposes only. Normally you would call srand() just once at the start. My program is an artificial example meant to simulate the effect of frequent re-running of a program.