Python 我是否需要将random.seed()与random.uniform()一起使用以确保获得不同的序列

Python 我是否需要将random.seed()与random.uniform()一起使用以确保获得不同的序列,python,Python,我必须使用random.seed()来确保随机数是不同的还是随机的。uniform每次调用时都会设置一个新的种子? 我不想重复序列,所以使用seed是否重要?案例1: 案例1的输出: 如您所见,在案例1中,不同的会话(运行程序是一个会话)产生相同的随机变量集 案例2: 案例2的输出: 另一方面,在案例2中,不同会话中的随机变量集也不同 这是因为当您导入random时,它会随机拾取一个种子。在不同的训练阶段,种子可能会有所不同 但是,如果覆盖种子,则将具有相同的随机变量集,如案例1所示。使用种子的

我必须使用random.seed()来确保随机数是不同的还是随机的。uniform每次调用时都会设置一个新的种子? 我不想重复序列,所以使用seed是否重要?

案例1: 案例1的输出: 如您所见,在案例1中,不同的会话(运行程序是一个会话)产生相同的随机变量集

案例2: 案例2的输出: 另一方面,在案例2中,不同会话中的随机变量集也不同

这是因为当您导入random时,它会随机拾取一个种子。在不同的训练阶段,种子可能会有所不同


但是,如果覆盖种子,则将具有相同的随机变量集,如案例1所示。

使用种子的原因是为了使结果可重复。对于实际和不可再现的随机性(而不是伪随机性),请使用random.SystemRandom()。它可以生成均匀分布的值,例如random.SystemRandom().uniform(01000000)如果逻辑颠倒,则只调用seed来获取返回的确定值随机。uniform()从PRNG序列返回一个新的随机数。当该PRNG以相同的值播种时,它产生相同的序列。默认情况下,“随机”在模块导入时与当前系统时间一起播种。您只需显式地进行种子设定,即可实现对模拟非常重要的相同序列的复制。@PadraicCunningham:伪随机性不是随机的,即使种子是随机的,也可以通过频谱分析等进行预测。这对random.SystemRandom来说不是真的。@TrisNefzger,是的,您可以使用
os.uradom
,但其安全性也取决于您的操作系统
import random
random.seed(10)

for i in range(3):
    print random.randrange(2000)
$ python b.py
1142
857
1156
$ python b.py
1142
857
1156
import random

for i in range(3):
    print random.randrange(2000)
$ python b.py
1469
1559
267
$ python b.py
1252
476
1804