The man page on my system (which from the man project of the man pages says:
These functions are deprecated by SVID 3, which states that rand(3) should be used instead.
SVID 3 was published in 1989.
SVID 4 (link to 720-page PDF), published in 1995, documents drand48 , erand48 , lrand48 , nrand48 , mrand48 , jrand48 , srand48 , seed48 and lcong48 and, like POSIX, do not say anything that they are outdated.
POSIX , since 2013, does not say anything that they are out of date, out of date or out of date.
I did not find a copy of SVID 3, so I don’t know why it would declare these functions obsolete, but apparently this solution was revised later. The statement on the manual page looks like outdated information. I would not worry about that.
As for the function you should use, the C rand() function is the most portable (unless you recompile another version from the source code). Some rand() implementations are of poor quality, with the low-order bit being repeated in a very correct pattern; others are a little better.
If you don't need high-quality pseudo-random numbers, you can also use rand() (seeded by calling srand() with a reasonable value, like srand(time(NULL)) .
If you need high-quality pseudo-random numbers, it is likely that none of these functions will be good enough, I would advise, for example, to use any of them for cryptography. You can use /dev/urandom or /dev/random if your system supports it. I heard good things about Mersenne Twister , but I don't have enough experience to comment.
(By the way, if you are searching in SVID for SVID, watch out for Svið ).