[New-bugs-announce] [issue4979] random.uniform can return its upper limit
Max Hailperin
report at bugs.python.org
Sun Jan 18 01:03:18 CET 2009
New submission from Max Hailperin <max at gustavus.edu>:
The documentation for random.uniform says that random.uniform(a,b)
should return a number strictly less than b, assuming a<b. (The result
should be strictly less than a if a>b.) Thus both of the following
expressions should always evaluate to False:
a<b and b in [random.uniform(a,b) for i in range(20)]
a<b and b in [random.uniform(b,a) for i in range(20)]
Yet both of them evaluate to True (except, presumably, one time in a
million) after doing the following assignments:
a = 1.0
b = 1.0 + 2.0**-52
Other values of a and b also exist for which random.uniform will
sometimes return its upper limit. (For example, the -52 can be
increased to -51, -50, etc., with correspondingly less frequent
violations of the spec.)
Because this is a case where the code is violating an explicit
specification in the documentation, I'm reporting it as a behavior bug.
But perhaps the behavior is as intended and the documentation is at
fault. For that reason, I'm also emailing docs at python.org.
The documentation would in any case need a little touching up, in that
it has a self-contradictory specification for the case where a=b. There
is no value N for which a<=N<b, given a=b. That minor touch-up could be
combined with allowing the behavior described in this bug report, if
that behavior is in fact desired.
----------
components: Library (Lib)
messages: 80062
nosy: hailperin
severity: normal
status: open
title: random.uniform can return its upper limit
type: behavior
versions: Python 3.0
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue4979>
_______________________________________
More information about the New-bugs-announce
mailing list