On Jun 10, 7:25 am, John Yeung <gallium.arsen...@gmail.com> wrote: > On Jun 10, 1:52 am, Steven D'Aprano > > <ste...@remove.this.cybersource.com.au> wrote: > > On Tue, 09 Jun 2009 22:21:26 -0700, John Yeung wrote: > > > Therefore, to me the most up-to-date docs (which say > > > that uniform(a, b) returns a float in the closed > > > interval [a, b]) is closer to correct than before, > > > but still fails to point out the full subtlety of > > > the behavior. > > > Which is? > > That uniform(a, b) will return a random float in the semi-open > interval [a, b) for certain values of a and b; and in the closed > interval [a, b] for other values of a and b. (Swap a and b if a > b.) > > To me, the fact that you sometimes get a semi-open interval and > sometimes a closed interval is worth noting in the docs.
Do you want to submit a doc patch? For practical purposes, I think you'd be hard-pressed to find a statistical test that could reliably distinguish between a large sample of values from random.uniform(a, b) and a sample from a 'perfect' uniform distribution on the closed interval [a, b]. It's true that there are values of a and b such that random.uniform(a, b) can never produce b. But for given a and b, not too close together, there may be many other values that can't be produced as well, so it hardly seems worth pointing out one particular value that can never be produced. Example: on a typical system there are almost 2**62 floats in the range [0, 1); the vast majority of these can never be produced by random.random(), which can only ever return one of 2**53 distinct values (it essentially just returns a value of the form n/2**53 with n an integer in the range [0, 2**53)). So random.uniform(0, 1) will miss lots of possible values. On the other hand, it's easy to find examples of a and b such that random.uniform(a, b) has a significant chance of producing b. For example, take a = 10**16, b = 10**16 + 4, then there's about a 1 in 4 chance of getting b. Or for a more extreme example, simply take a = b. Hence the doc change. Mark -- http://mail.python.org/mailman/listinfo/python-list