The underlying C function rand() can be assumed to be of poor quality; on glibc systems, in particular, it's basically a linear congruential generator. Its benefit is portability.
All of rand(), random() and the rand48 family of RNGs suffer from the additional problem that they perform poorly in a multi-threaded system, because they need an exclusive lock (or comparably expensive operations) to protect their internal state, creating a serialization bottleneck.
If you are doing work that needs a quality source of random numbers, you generally want an implementation where you know and can control its properties.