On 05/21/16 16:55, Conrad Meyer wrote:
On Sat, May 21, 2016 at 1:40 PM, Pedro Giffuni <p...@freebsd.org> wrote:
On 05/21/16 14:05, Conrad Meyer wrote:
Won't this still return a negative integer in many cases?
random(9) returns u_long, whereas this rand() routine returns 'int'.
Even on architectures where long is the same size as ordinary
integers, the range of possible results of the 'random() / 2 + 1'
expression, before implicit cast to signed, is [1, 2^31] (inclusive).
According to:
sys/libkern/random.c
The result is uniform on [0, 2^31 - 1].
Ah, I missed that. Sorry! In that case, I'm not sure why this is
needed — the result fits in a non-negative 2's complement signed
integer.
Actually, I had missed it too. And I also had no idea we were working
around the zero singularity.
I will revert the change and will do an adjustment for the case where
we use 0 as a seed (which in MS should be equivalent to 1).
Pedro.
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"