如何使用random.seed在Python中创建多个不同的初始伪随机数?
我正在使用如何使用random.seed在Python中创建多个不同的初始伪随机数?,python,random,random-seed,Python,Random,Random Seed,我正在使用random.seed在一定次数的迭代中生成伪随机数。但是,使用此方法,对于相同的迭代次数,每次生成相同的初始值。我想知道是否有一种方法可以编写代码来生成参数范围内不同位置的4个不同的随机初始值?例如,我的代码如下所示: import random N=10 random.seed(N) vx1 = [random.uniform(-3,3) for i in range(N)] 每次这将生成起始vx1[0]=0.428。是否有方法编写代码,以生成四个不同的初始值vx1?因此,vx
random.seed
在一定次数的迭代中生成伪随机数。但是,使用此方法,对于相同的迭代次数,每次生成相同的初始值。我想知道是否有一种方法可以编写代码来生成参数范围内不同位置的4个不同的随机初始值?例如,我的代码如下所示:
import random
N=10
random.seed(N)
vx1 = [random.uniform(-3,3) for i in range(N)]
每次这将生成起始
vx1[0]=0.428
。是否有方法编写代码,以生成四个不同的初始值vx1
?因此,vx1
的初始值可能等于0.428或3个其他值。那么,每个初始值的范围内也会有以下9个随机数。我想你对它的作用有一个基本的误解。“随机”数生成器实际上是生成伪随机数的确定性系统。种子是可复制初始状态的标签。它的全部要点是,将为同一种子生成相同的数字序列
如果要创建1000000个数字的可复制序列,请使用种子:
s = 10
N = 1000000
random.seed(s)
vx1 = [random.uniform(-3, 3) for i in range(N)]
如果希望每次生成不同的序列,请每次使用不同的种子。最简单的方法就是不要调用seed
:
N = 1000000
vx1 = [random.uniform(-3, 3) for i in range(N)]
我不确定我是否理解。多次使用相同的值调用
seed
,将导致随机数生成器多次返回相同的值。这是故意的。如果您不希望数字相同,请不要使用静态值调用seed
,不要多次调用,也可能根本不要调用。总结一下:为什么要使用seed()
?我目前正在使用seed()进行蒙特卡罗模拟,以获得1000000次迭代的可再现结果。然而,我们认为我们可能陷入局部变量,无法找到随机抽样的真实参数集,这就是为什么我们认为生成4个随机初始参数集将允许我们找到最大值。我不确定结果在没有种子的情况下是否可以复制,谢谢。我想我也很困惑,数字s
会影响什么?例如,使用s=10和s有什么区别=1000000@MAJ有关Python的PRNG如何工作的概念性解释,请参见s
在这里用作种子值,与样本量N无关。它只是PRNG循环的入口点。相同的入口点,生成相同的序列。