Issue17020
This issue tracker has been migrated to GitHub,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2013-01-23 17:32 by klankschap, last changed 2022-04-11 14:57 by admin. This issue is now closed.
Messages (17) | |||
---|---|---|---|
msg180480 - (view) | Author: Floris van Manen (klankschap) | Date: 2013-01-23 17:32 | |
I recently noticed that the standard random() function generates values >= 1.0 As processes are called from an event scheduler, each process has its own Random() instance. self.random = random.Random(seed) self.randomState = self.random.getstate() keeping track of multiple objects: self.random.setstate(self.randomState) self.random.jumpahead(1) self.randomState = self.random.getstate() Also gammavariate() generates errors as it too makes use of the _random() call A workaround is to check each response of random() for values >= 1.0 |
|||
msg180482 - (view) | Author: R. David Murray (r.david.murray) * | Date: 2013-01-23 18:00 | |
Can you post a small program that demonstrates the problem? I'm certainly not seeing a problem just calling random.random() (and would be very surprised if I did). |
|||
msg180483 - (view) | Author: Peter Otten (peter.otten) * | Date: 2013-01-23 18:09 | |
This could be a duplicate of issue14591. |
|||
msg180486 - (view) | Author: R. David Murray (r.david.murray) * | Date: 2013-01-23 18:18 | |
That indeed looks likely. Fortunately there will be a new release of 2.7 including that fix soon. Floris, do you have any way to test against 2.7 tip? |
|||
msg180487 - (view) | Author: Floris van Manen (klankschap) | Date: 2013-01-23 18:43 | |
On 23 Jan 2013, at 19:18, R. David Murray wrote: > > R. David Murray added the comment: > > That indeed looks likely. Fortunately there will be a new release of 2.7 including that fix soon. > > Floris, do you have any way to test against 2.7 tip? using 2.7.3 as well as pypy (based on 2.7.3) via macport. pypy version suffers from the same issue. i'm not (yet) familiar how to get the tip from 2.7.3 hint? .F |
|||
msg180488 - (view) | Author: Floris van Manen (klankschap) | Date: 2013-01-23 18:46 | |
indeed, looks like the same. .F On 23 Jan 2013, at 19:09, Peter Otten wrote: > > Peter Otten added the comment: > > This could be a duplicate of issue14591. > > ---------- > nosy: +peter.otten > > _______________________________________ > Python tracker <report@bugs.python.org> > <http://bugs.python.org/issue17020> > _______________________________________ |
|||
msg180495 - (view) | Author: R. David Murray (r.david.murray) * | Date: 2013-01-23 19:17 | |
hg pull http://hg.python.org/cpython hg up 2.7 There are also git and bzr mirrors, but I don't know their urls or how up to date they are. We could also just close this as a dup if you are pretty sure its the same problem (which it certainly sounds like it is) and you could post to that issue if your problem isn't solved by the RC for 2.7.4. |
|||
msg180553 - (view) | Author: Raymond Hettinger (rhettinger) * | Date: 2013-01-25 05:24 | |
Can you show how you determined that you got a value >= 1.0 or provide a seed that reproduces the problem? I'm not seeing an issue on the 2.7.3 64-bit Mac build: >>> from itertools import starmap, repeat >>> from random import random, seed >>> seed(56019413053459019451450201) >>> for i in range(20): print max(starmap(random, repeat((), 10000000))) 0.999999787916 0.999999859769 0.999999809486 0.99999968575 0.999999886565 0.999999991274 0.999999886922 0.999999874948 0.999999987989 0.999999751067 0.999999999353 0.999999935037 0.999999919091 0.999999664265 0.999999951016 0.999999998665 0.999999919618 0.999999786864 0.999999874042 0.999999967453 |
|||
msg180555 - (view) | Author: Floris van Manen (klankschap) | Date: 2013-01-25 07:17 | |
It is in the combination with jumpahead(), getstate(), setstate() that you'll experience random() to produce values >= 1.0 .F On 25 Jan 2013, at 06:24, Raymond Hettinger wrote: > > Raymond Hettinger added the comment: > > Can you show how you determined that you got a value >= 1.0 or provide a seed that reproduces the problem? > > I'm not seeing an issue on the 2.7.3 64-bit Mac build: > >>>> from itertools import starmap, repeat >>>> from random import random, seed >>>> seed(56019413053459019451450201) >>>> for i in range(20): > print max(starmap(random, repeat((), 10000000))) > > > 0.999999787916 > 0.999999859769 > 0.999999809486 > 0.99999968575 > 0.999999886565 > 0.999999991274 > 0.999999886922 > 0.999999874948 > 0.999999987989 > 0.999999751067 > 0.999999999353 > 0.999999935037 > 0.999999919091 > 0.999999664265 > 0.999999951016 > 0.999999998665 > 0.999999919618 > 0.999999786864 > 0.999999874042 > 0.999999967453 > > ---------- > nosy: +rhettinger > > _______________________________________ > Python tracker <report@bugs.python.org> > <http://bugs.python.org/issue17020> > _______________________________________ |
|||
msg180562 - (view) | Author: Stefan Krah (skrah) * | Date: 2013-01-25 10:07 | |
> It is in the combination with jumpahead(), getstate(), setstate() that you'll experience random() to produce values >= 1.0 Let me reiterate what David said: Can you post a self-contained program that exhibits the issue? |
|||
msg180603 - (view) | Author: Floris van Manen (klankschap) | Date: 2013-01-25 18:16 | |
On 25 Jan 2013, at 11:07, Stefan Krah wrote: > > Stefan Krah added the comment: > >> It is in the combination with jumpahead(), getstate(), setstate() that you'll experience random() to produce values >= 1.0 > > Let me reiterate what David said: Can you post a self-contained program > that exhibits the issue? My program is sort of complex in the meaning of multiple processes interleaving and interacting via a priorityqueue. Each individual steps through multiple classes which all should stay independent. No simple short snippet. From what i understand is that issue14591 was able to reproduce the same feature as it seems related to the jumpahead() malfunctioning. .F |
|||
msg180604 - (view) | Author: Stefan Krah (skrah) * | Date: 2013-01-25 18:35 | |
Floris van Manen <report@bugs.python.org> wrote: > From what i understand is that issue14591 was able to reproduce the same feature as it seems related to the jumpahead() malfunctioning. I'm also quite sure that it's the same issue. It would be nice to have confirmation though. If you have the opportunity to compile the tip of the 2.7 branch (where #14591 is fixed), get one of these: http://hg.python.org/cpython/archive/864b9836dae6.tar.gz http://hg.python.org/cpython/archive/864b9836dae6.zip |
|||
msg180616 - (view) | Author: Floris van Manen (klankschap) | Date: 2013-01-25 19:42 | |
On 25 Jan 2013, at 19:35, Stefan Krah wrote: > > Stefan Krah added the comment: > > Floris van Manen <report@bugs.python.org> wrote: >> From what i understand is that issue14591 was able to reproduce the same feature as it seems related to the jumpahead() malfunctioning. > > I'm also quite sure that it's the same issue. It would be nice to have > confirmation though. If you have the opportunity to compile the tip of > the 2.7 branch (where #14591 is fixed), get one of these: > > http://hg.python.org/cpython/archive/864b9836dae6.tar.gz > http://hg.python.org/cpython/archive/864b9836dae6.zip > Did compile that version and it launches. To test with my code i do not want to have it interfere with my current version. I remember it is possible to setup n isolated environment with pip en virtualenv. But i never did this so far. Any hints / links to (simple) script explanation that could do the job? Or is there an even simpler way? .F |
|||
msg180626 - (view) | Author: Stefan Krah (skrah) * | Date: 2013-01-25 21:27 | |
Floris van Manen <report@bugs.python.org> wrote: > Did compile that version and it launches. > To test with my code i do not want to have it interfere with my current version. > I remember it is possible to setup n isolated environment with pip en virtualenv. > But i never did this so far. > Any hints / links to (simple) script explanation that could do the job? > Or is there an even simpler way? I wouldn't bother with virtualenvs yet. First I'd simply install python into /tmp: mkdir /tmp/usr ./configure --prefix=/tmp/usr/ make make install Then always call python with the full path. If your app is a simple script, then: /tmp/usr/bin/python app.py If you have to install it: /tmp/usr/bin/python setup.py install |
|||
msg180628 - (view) | Author: Floris van Manen (klankschap) | Date: 2013-01-25 21:51 | |
On 25 Jan 2013, at 22:27, Stefan Krah wrote: > Then always call python with the full path. If your app is a simple > script, then: > > /tmp/usr/bin/python app.py ok. and how do i add extra packages to that new python version ? e.g. i need to install pyyam and openpyxll (sorry for the inconvenience) .F |
|||
msg180631 - (view) | Author: Floris van Manen (klankschap) | Date: 2013-01-25 22:06 | |
On 25 Jan 2013, at 22:27, Stefan Krah wrote: > Then always call python with the full path. If your app is a simple > script, t ok, managed to install the extra packages and run the app. Seems to work correctly now, no more random() >= 1.0 (thanks!) .F |
|||
msg180632 - (view) | Author: R. David Murray (r.david.murray) * | Date: 2013-01-25 22:11 | |
Excellent. Thanks for testing. And thanks for pointing out the duplicate, Peter. |
History | |||
---|---|---|---|
Date | User | Action | Args |
2022-04-11 14:57:40 | admin | set | github: 61222 |
2013-01-25 22:11:35 | r.david.murray | set | status: open -> closed type: compile error -> behavior assignee: ronaldoussoren -> messages: + msg180632 superseder: Value returned by random.random() out of valid range on 64-bit resolution: duplicate stage: resolved |
2013-01-25 22:06:39 | klankschap | set | messages: + msg180631 |
2013-01-25 21:51:13 | klankschap | set | messages: + msg180628 |
2013-01-25 21:27:52 | skrah | set | messages: + msg180626 |
2013-01-25 19:42:39 | klankschap | set | messages: + msg180616 |
2013-01-25 18:35:56 | skrah | set | messages: + msg180604 |
2013-01-25 18:16:57 | klankschap | set | messages: + msg180603 |
2013-01-25 10:07:46 | skrah | set | nosy:
+ skrah messages: + msg180562 |
2013-01-25 07:17:13 | klankschap | set | messages: + msg180555 |
2013-01-25 05:24:29 | rhettinger | set | nosy:
+ rhettinger messages: + msg180553 |
2013-01-23 19:17:58 | r.david.murray | set | messages: + msg180495 |
2013-01-23 18:46:45 | klankschap | set | messages: + msg180488 |
2013-01-23 18:43:34 | klankschap | set | messages: + msg180487 |
2013-01-23 18:18:28 | r.david.murray | set | messages: + msg180486 |
2013-01-23 18:09:49 | peter.otten | set | nosy:
+ peter.otten messages: + msg180483 |
2013-01-23 18:00:13 | r.david.murray | set | nosy:
+ r.david.murray messages: + msg180482 |
2013-01-23 17:32:12 | klankschap | create |