首页 > 解决方案 > `np.random.seed(number)` 中括号中的数字是什么意思?

问题描述

np.random.seed(0), np.random.seed(42), 和有什么区别np.random.seed(..any number)。括号中数字的作用是什么?

标签: numpy

解决方案


python使用迭代Mersenne Twister算法生成伪随机数 [1]种子只是我们开始迭代的地方。

需要明确的是,大多数计算机没有“真正的”随机性来源。有趣的是,“随机性”对如此多的应用程序如此有价值,而且很难获得(您可以购买专门用于此目的的专用设备)。由于很难生成随机数,但它们仍然是必要的,因此已经开发了许多、许多、许多、许多算法来生成随机数,但看起来它们似乎是随机数。生成“看起来很随机”的数字的算法称为伪随机数生成器 (PRNG)。由于 PRNG 实际上是确定性的,因此它们不能简单地从以太中创建一个数字并让它看起来是随机的。. 事实证明,使用一些复杂的运算和模运算,我们可以输入一个输入,并得到另一个似乎与输入几乎或没有关系的数字。使用这种直觉,我们可以简单地将 PRNG 的先前输出用作下一个输入。然后我们得到一个数字序列,如果我们的 PRNG 是好的,它们似乎彼此没有关系。

为了开始我们的迭代 PRNG,我们需要一个初始输入。这个初始输入被称为“种子”。由于 PRNG 是确定性的,对于给定的种子,它将生成相同的数字序列。通常,有一个默认种子,它本身是随机的。最常见的是当前时间。但是,当前时间不是一个很好的随机数,因此这种行为有时会引起问题。如果您希望程序每次运行时都以相同的方式运行,您可以提供种子(0 是一个流行的选项,但完全是任意的)。然后,您会得到一系列随机数,但如果您将代码提供给某人,他们实际上可以完全重新创建程序的运行时,就像您在运行程序时所看到的那样。


推荐阅读