Functions rand() and random() are either defined by POSIX since at least POSIX.1-2001 (and randomize() is not standardized).
On older rand() implementations, and on current implementations on different systems, the lower-order bits are much less random than the higher-order bits.
When available, random() does not suffer of this issue.
In add, modern version of rand() use the same random number generator as random(). So rand() may be correct, but it is not garanteed.
So, always use random() instead of rand(). If random() is not available on your operating system, ask to operating system developers to provide newer standards API implementation (2001 standard is now old enough to expect any system to provide it).