Grz*_*cki 8 python random python-2.x python-3.x
是否保证pyhon2/python3脚本与随机生成器初始化random.setstate()或random.seed()将在不同版本和平台上产生相同的伪随机序列?(例如python 3.1 on Mac , the same as python 3.2 on Linux 64-bit)
问题是关于:python2和python3,假设python3脚本将在python3解释器上运行,反之亦然.
Python 2.3及更高版本使用Mersenne Twister生成器,它独立于系统随机函数(作为Python的C扩展模块实现).对于使用Mersenne Twister的任何版本,不同版本和平台的结果应该相同.
以前,您可以保证使用WichmannHill生成器向后兼容,但不幸的是,它似乎已在Python 3.x中删除.
如果您绝对需要保证兼容性,请按照文档的建议编写自己的Random子类(或使用稳定的外部实现,例如simplerandom)random:
如果您想使用自己设计的不同基本生成器,则Random Random也可以是子类:在这种情况下,重写random(),seed(),getstate(),setstate()和jumpahead()方法.可选地,新生成器可以提供getrandbits()方法 - 这允许randrange()在任意大范围内产生选择.