【发布时间】:2019-04-02 14:44:23
【问题描述】:
np.random.seed(0)、np.random.seed(42) 和 np.random.seed(..any number) 有什么区别。括号里的数字的作用是什么?
【问题讨论】:
标签: numpy
np.random.seed(0)、np.random.seed(42) 和 np.random.seed(..any number) 有什么区别。括号里的数字的作用是什么?
【问题讨论】:
标签: numpy
python使用迭代Mersenne Twister算法生成pseudo-random numbers[1]。 seed 只是我们开始迭代的地方。
需要明确的是,大多数计算机没有“真正的”随机性来源。有趣的是,“随机性”对这么多应用程序如此有价值,而且很难获得(您可以购买专门用于此目的的specialized device)。由于很难生成随机数,但它们仍然是必要的,因此已经开发了许多、许多、许多、许多算法来生成 不是随机的数字,但是 看起来好像它们是。生成"look randomish" 的数字的算法称为伪随机数生成器 (PRNG)。由于 PRNG 实际上是确定性的,因此它们不能简单地从以太中创建一个数字并让它看起来是随机的。他们需要一个输入。事实证明,使用一些复杂的运算和模运算,我们可以输入一个输入,并得到另一个似乎与输入几乎没有关系或没有关系的数字。使用这种直觉,我们可以简单地将 PRNG 的先前输出用作下一个输入。然后我们得到一个数字序列,如果我们的 PRNG 是好的,它们似乎彼此没有关系。
为了开始我们的迭代 PRNG,我们需要一个初始输入。这个初始输入被称为“种子”。由于 PRNG 是确定性的,对于给定的种子,它将生成相同的数字序列。通常,有一个默认种子,它本身是随机的。最常见的是当前时间。但是,当前时间不是一个很好的随机数,因此 cause problems 有时会知道这种行为。如果您希望程序在每次运行时都以相同的方式运行,您可以提供一个种子(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 数字输出。
【讨论】: