Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date: Sun, 21 Sep 2014 15:20:25 +0300
From: "Nadav Har'El" <>
Subject: Re: drand48() gives wrong sequence?

>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.

(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.

Nadav Har'El

Content of type "text/html" skipped

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.