Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 3 Jul 2013 14:43:56 +1000 (EST)
From:      Bruce Evans <brde@optusnet.com.au>
To:        Andrey Chernov <ache@FreeBSD.org>
Cc:        svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, "Pedro F. Giffuni" <pfg@FreeBSD.org>, src-committers@FreeBSD.org, Bruce Evans <brde@optusnet.com.au>
Subject:   Re: RAND_MAX broken
Message-ID:  <20130703144126.L1498@besplex.bde.org>
In-Reply-To: <51D33552.1030208@freebsd.org>
References:  <201307012143.r61Lhemi067176@svn.freebsd.org> <20130702130818.V865@besplex.bde.org> <20130702165642.X1571@besplex.bde.org> <51D2F571.8050108@freebsd.org> <20130703020550.E8632@besplex.bde.org> <51D33552.1030208@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 3 Jul 2013, Andrey Chernov wrote:

> On 02.07.2013 20:33, Bruce Evans wrote:
>> I checked the values returned by rand().  The ACM part works as
>> intended, so it never returns RAND_MAX.  It also never returns 0.  So
>> the distribution of values in the documented range [0, RAND_MAX] is
>> very non-uniform.  It is uniform in [1, RAND_MAX - 1].  To use this
>> algorithm for rand(), 1 should have been subtracted, giving a range
>> of [0, 0x7ffffffe].
>
> Do you mean [0, 0x7ffffffd] (assuming 1 subtracted)?

Yes.

> See attached patch.
> I don't see compatibility problems at least from POSIX specs point of
> view - they don't say something specific about RAND_MAX.

I like the patch.  It is binary compatibility problems and maybe applications
assuming that (RAND_MAX + 1) is 0x80000000 so as to do magic bit operations
with it that may be problems.

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130703144126.L1498>