Date: Wed, 19 Feb 2003 01:22:00 -0800 From: David Schultz <dschultz@uclink.Berkeley.EDU> To: Paul Herman <pherman@frenchfries.net> Cc: phk@phk.freebsd.dk, Peter Jeremy <peterjeremy@optushome.com.au>, FreeBSD Hackers <hackers@FreeBSD.ORG> Subject: Re: arc4random() range Message-ID: <20030219092200.GA26914@HAL9000.homeunix.com> In-Reply-To: <20030219003725.W240-100000@mammoth.eat.frenchfries.net> References: <77946.1045642969@critter.freebsd.dk> <20030219003725.W240-100000@mammoth.eat.frenchfries.net>
next in thread | previous in thread | raw e-mail | index | archive | help
Thus spake Paul Herman <pherman@frenchfries.net>: > On Wed, 19 Feb 2003 phk@phk.freebsd.dk wrote: > > > In message <20030218232210.T240-100000@mammoth.eat.frenchfries.net>, Paul Herma > > n writes: > > > > > arc4random() returns random numbers in the range of 0 to > > > (2**32)-1, and therefore has twice the range of RAND_MAX. > > > > Good. > > > > > EXAMPLES > > > The following produces a drop-in replacement for the traditional > > > random() and rand() functions using arc4random(): > > > #define arc4random31() (arc4random() & 0x7FFFFFFF) > > > > Not good. Only true on 32 bit archs. > > Heh? > > random(3) produces numbers between 0 and RAND_MAX on my alpha. > random(3) produces numbers between 0 and RAND_MAX on my i386. > (arc4random() & 0x7FFFFFFF) produces numbers between 0 and RAND_MAX on my alpha. > (arc4random() & 0x7FFFFFFF) produces numbers between 0 and RAND_MAX on my i386. Your code should work fine, although it assumes RAND_MAX is 2^31-1, rather than using the symbolic constant. But I think if people were really interested in using arc4random() as a drop-in replacement for random(), they would have already written a libc function to mimic random(). Just documenting the range of arc4random() should be sufficient. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030219092200.GA26914>