np.random.seed(number)`括号中的数字是什么意思?

时间:2019-04-02 14:44:23

标签: numpy

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

3 个答案:

答案 0 :(得分:1)

那将是生成器的开始键。通常,如果您想获得可重现的结果,则将在整个模拟过程中反复使用相同的种子。

答案 1 :(得分:1)

python使用迭代Mersenne Twister算法生成pseudo-random numbers [1]seed就是我们开始迭代的地方。

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

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

答案 2 :(得分:0)

您正在设置随机数生成器的种子,以便获得可重复的结果。例子。

np.random.seed(0)
np.random.randint(0,100,10)

输出:

array([44, 47, 64, 67, 67,  9, 83, 21, 36, 87])

现在,如果您在计算机上运行相同的代码,则应该从0到100的随机整数中获得相同的10个数字输出。