Hi, I ran the following trivial program on both glibc (on Linux), and Musl (on OSv).
#include <stdio.h>
#include <stdlib.h>
int main() {
srand48(12345);
printf("%ld %ld %ld\n", lrand48(), lrand48(), lrand48());
}
Unfortunately, the sequence did not come out the same: On glibc+Linux I got:
444188209 1973930609 483889296
But on OSv+Musl I got:
1737082417 264424049 61706384
I expected to get the same sequence because both the drand48(3) man-page on Linux and the drand48 specification in Posix (
http://pubs.opengroup.org/onlinepubs/9699919799/functions/drand48.html) are pretty explicit about the formulas that should be used. I also looked at the Musl code quickly, and it does seem to use these formulas.
Any ideas why I'm getting the wrong sequence?
Thanks,
Nadav.