>Am Sonntag, den 21.09.2014, 14:45 +0300 schrieb Nadav Har'El:
>> Any ideas why I'm getting the wrong sequence?
>
>I don't think you are getting the wrong sequence, you are just
>printing it wrong. "%ld" is for long double and not for double.
>
>Jens
(I tried to subscribe to the mailing list but it didn't work, so please CC me with further responses).

"%ld" is not a double at all, it's an int.

My message's title was indeed somewhat confusing, because I mentioned drand48() in the title but used lrand48() in my example code. I saw the same problem of a different sequence also with drand48() (printed with %g of course) - but at the end decided to include code which printed lrand48().

Anyway, "%ld" is the right thing to use here because lrand48() returns a "long int".
Replacing it with "%d" makes no difference and the sequences are still different (I tried). This is because while lrand48()'s type is officially "long", its return value is just 32-bit, so one can treat it just fine as either long (64-bit on my 64-bit machine) or int (32-bit) and you get the same result.



--