Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Feb 2003 20:32:48 -0500
From:      Anthony Schneider <anthony@x-anthony.com>
To:        Paul Herman <pherman@frenchfries.net>
Cc:        FreeBSD Hackers <hackers@FreeBSD.ORG>
Subject:   Re: arc4random() range
Message-ID:  <20030219013247.GA10910@x-anthony.com>
In-Reply-To: <20030218153651.A240-100000@mammoth.eat.frenchfries.net>
References:  <20030218153651.A240-100000@mammoth.eat.frenchfries.net>

next in thread | previous in thread | raw e-mail | index | archive | help
an issue of arc4random return u_int32_t and rand*
returning int (ie unsigned vs signed)?

-Anthony.

On Tue, Feb 18, 2003 at 04:04:57PM -0800, Paul Herman wrote:
> Hi,
> 
> ...a potential quick commit for someone. :-)
> 
> What's the concesus that arc4random() should be a drop-in
> replacement for rand()/random()?  Consider the following that
> caclulates the average of a bunch of random numbers on [0.0, 1.0]:
> 
>   bash$ cat rand.c
>   #include <stdlib.h>
> 
>   int i;
>   double avg;
> 
>   #define ITERATIONS 1000000
>   #define FIND_AVG(func)  do { \
>                 for (i=0, avg = 0.0; i<ITERATIONS; i++)                 \
>                         avg += (double)func()/(double)RAND_MAX;         \
>                 printf("avg:\t%f\n", avg/ITERATIONS);                   \
>                 } while (0)
> 
>   int main() {
>         FIND_AVG(rand);
>         FIND_AVG(random);
>         FIND_AVG(arc4random);
>         return 0;
>   }
>   bash$ cc rand.c && ./a.out
>   avg:    0.500404
>   avg:    0.500007
>   avg:    1.001370	<--- !!!!!!
>   bash$ uname -r
>   4.7-STABLE
>   bash$
> 
> Is is just understood that arc4random() doesn't obey RAND_MAX, or
> should it?  Whatever the answer is, perhaps the manpage should
> state what the range is like the manpages for rand(3) and random(3)
> do.
> 
> -Paul.
> 
> 
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-hackers" in the body of the message

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?20030219013247.GA10910>