difference between random module in python 2.6 and 3.2?

Terry Reedy tjreedy at udel.edu
Mon Feb 6 02:27:14 EST 2012

On 2/6/2012 12:56 AM, Steven D'Aprano wrote:
> On Mon, 06 Feb 2012 00:07:04 -0500, Terry Reedy wrote:
>> On 2/5/2012 11:01 PM, Steven D'Aprano wrote:
>>> Reading the docs, I would expect that when using an int as seed, you
>>> should get identical results.
>> That is similar to expecting hash to be consistent from version to
>> version.
> No. hash is not intended to be consistent across versions, or even across

Oh, but it was. Changing it will break tests, including some in the 
Python test suite.

> This, plus Raymond Hettinger's comments on the bug report, make me think
> that the change in behaviour of randrange and choice is not deliberate

As I said, it was a necessary consequence of a bug fix.

> and should be treated as a bug. Raymond made a strong case arguing for
> repeatability, and then approved a bug fix that broke repeatability. I
> doubt that was deliberate.

It was deliberate that randrange was changed to an even distribution 
from a slightly uneven distribute. That implies a change in the pattern. 
That was known and the main subject of discussion. As Antoine said, 
making functions exactly repeatable across versions means not fixing 
bugs or otherwise improving them. This statement is not limited to the 
random module.

You have persuaded me that the doc should be more explicit that while 
the basic random.random sequence will be kept repeatable with seed set 
(except perhaps after a changeover of several releases), the convenience 
transformations can be changed if improvements are needed or thought 
sufficiently desirable.

Terry Jan Reedy

More information about the Python-list mailing list