相关疑难解决方法(0)

为什么在Python版本之间播种随机生成器不稳定?

我试图在random.random()安装了不同python3版本的不同系统上重现python的随机序列.

这应该很容易,因为文档说:

大多数随机模块的算法和种子函数都会在Python版本中发生变化,但保证两个方面不会改变:

  • 如果添加了新的播种方法,则将提供向后兼容的播种机.
  • 当兼容的播种机被赋予相同的种子时,生成器的random()方法将继续产生相同的序列.

所以我希望下面的代码总是打印相同的10个数字,无论具体的python3版本如何:

import sys
print(sys.version)

from random import seed, random

seed(str(1))
for i in range(10):
    print(random())
Run Code Online (Sandbox Code Playgroud)

但是,在两台不同的机器上进行测试:

3.2.3 (default, May  3 2012, 15:51:42) 
[GCC 4.6.3]
0.4782479962566343
0.044242767098090496
0.11703586901195051
0.8566892547933538
0.2926790185279551
0.0067328440779825804
0.0013279506360178717
0.22167546902173108
0.9864945747444945
0.5157002525757287
Run Code Online (Sandbox Code Playgroud)

3.1.2 (release31-maint, Dec  9 2011, 20:59:40)  
[GCC 4.4.5]
0.0698436845523
0.27772471476
0.833036057868
0.35569897036
0.36366158783
0.722487971761
0.963133581734
0.263723867191
0.451002768569
0.0998765577881
Run Code Online (Sandbox Code Playgroud)

给出不同的结果.

为什么是这样?有没有办法让它工作(即两次获得相同的随机序列?)

python random seed python-3.x

22
推荐指数
2
解决办法
2741
查看次数

Python 在哪些系统上不使用 IEEE-754 双精度浮点数

Python 对 IEEE 754 浮点运算进行了各种引用,但不保证1 2它将在运行时使用。因此我想知道哪里不是这种情况。

CPython 源代码遵循 C 编译器使用的任何内容double,实际上是binary64我所知道的所有常见系统上的 IEEE 754-2008,例如:

  • Linux 和 BSD 发行版(例如 FreeBSD、OpenBSD、NetBSD)
    • 英特尔 i386/x86 和 x86-64
    • ARM:AArch64
    • 功率:PPC64
  • MacOS 所有支持的架构均兼容 754
  • Windows x86 和 x86-64 系统

我知道还有其他已知的平台可以构建,但不知道这些平台在实践中如何运作。

python floating-point ieee-754

8
推荐指数
1
解决办法
1256
查看次数

python random.getstate()和random.setstate()

在这里随机学习模块,一开始就有簿记功能,据我所知,设置一个特定的种子是为了确保获得相同的随机数.

但是,getstate()setsate()link 在文档中,它没有介绍这个状态的含义,如果我不知道它意味着什么,我怎么能正确设置它?

random.getstate()

返回捕获生成器当前内部状态的对象.可以将此对象传递给setstate()以恢复状态.

random.setstate(状态)

state应该是从之前调用getstate()获得的,而setstate()将生成器的内部状态恢复到调用getstate()时的状态.

谢谢,

random python-3.x

4
推荐指数
2
解决办法
3015
查看次数

标签 统计

python ×2

python-3.x ×2

random ×2

floating-point ×1

ieee-754 ×1

seed ×1