cross python version randomness
Kev Dwyer
kevin.p.dwyer at gmail.com
Tue Mar 21 02:29:04 EDT 2017
Robin Becker wrote:
> Is there a way to get the same sequences of random numbers in python 2.7
> and python >= 3.3?
>
> I notice that this simple script produces different values in python 2.7
> and >=3.3
>
> C:\code\hg-repos\reportlab>cat s.py
> import sys, random
> print(sys.version)
> random.seed(103)
> for i in range(5):
> print(i, random.randint(10,25))
>
> C:\code\hg-repos\reportlab>\python27\python s.py
> 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit
> (AMD64)] 0 25
> 1 17
> 2 21
> 3 21
> 4 13
>
> C:\code\hg-repos\reportlab>\python33\python s.py
> 3.3.5 (v3.3.5:62cf4e77f785, Mar 9 2014, 10:35:05) [MSC v.1600 64 bit
> (AMD64)] 0 24
> 1 16
> 2 12
> 3 13
> 4 22
>
> However, when I use random.random() all seems to be the same so this
> script C:\code\hg-repos\reportlab>cat u.py
> import sys, random
> print(sys.version)
> random.seed(103)
> for i in range(5):
> print(i, random.random())
>
> seems to be fine
>
>
> C:\code\hg-repos\reportlab>\python27\python u.py
> 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit
> (AMD64)] (0, 0.9790501200727744)
> (1, 0.45629827629184827)
> (2, 0.7188470341002364)
> (3, 0.7348862425853395)
> (4, 0.21490166849706338)
>
> C:\code\hg-repos\reportlab>\python33\python u.py
> 3.3.5 (v3.3.5:62cf4e77f785, Mar 9 2014, 10:35:05) [MSC v.1600 64 bit
> (AMD64)] 0 0.9790501200727744
> 1 0.45629827629184827
> 2 0.7188470341002364
> 3 0.7348862425853395
> 4 0.21490166849706338
>
> presumably randint is doing something different to get its values.
The docs [https://docs.python.org/3/library/random.html#random.randrange]
for randrange have this note:
Changed in version 3.2: randrange() is more sophisticated about producing
equally distributed values. Formerly it used a style like int(random()*n)
which could produce slightly uneven distributions.
Maybe that's the explanation? Unfortunately I don't have an install of
3.0/1 to test against.
More information about the Python-list
mailing list