New submission from Max Hailperin <m...@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 d...@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 <rep...@bugs.python.org> <http://bugs.python.org/issue4979> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com