生成可重复的随机数

指定的种子

这个例子展示了如何通过先指定种子来重复随机数数组。每次使用相同的种子初始化生成器时,都会得到相同的结果。

首先,初始化随机数生成器,使本例中的结果可重复。

rng (“默认”);

现在,使用的种子初始化生成器1

rng (1);

然后,创建一个随机数数组。

兰德(3、3)=
A = 0.4170 0.3023 0.1863 0.7203 0.1468 0.3456 0.0001 0.0923 0.3968

重复执行相同的命令。

兰德(3、3)=
A = 0.5388 0.2045 0.6705 0.4192 0.8781 0.4173 0.6852 0.0274 0.5587

第一个呼叫兰德改变了生成器的状态,所以第二个结果是不同的。

现在,使用与之前相同的种子重新初始化生成器。然后复制第一个矩阵,一个

rng (1);兰德(3、3)=
A = 0.4170 0.3023 0.1863 0.7203 0.1468 0.3456 0.0001 0.0923 0.3968

在某些情况下,单靠播下种子并不能保证得到同样的结果。这是因为在代码执行时,随机数函数提取的生成器可能与您预期的不一样。为了长期可重复性,请同时指定种子和生成器类型。

例如,下面的代码将种子设置为1发电机接通梅森·Twister

rng (1,“旋风”);

当你想要设置种子和生成器类型时:

  • 确保您今天编写的代码在以后的MATLAB中运行时返回相同的结果®释放。

  • 确保您在以前的MATLAB版本中编写的代码的行为在使用当前版本时返回相同的结果。

  • 在运行别人的随机数代码后,重复你的代码中的随机数。

看到rng可用生成器列表的参考页。

保存和恢复发电机设置

这个例子展示了如何通过保存和恢复生成器设置来创建可重复的随机数数组。保存和恢复生成器设置的最常见原因是再现在算法或迭代中的特定点生成的随机数。例如,您可以使用生成器设置作为调试的辅助。

首先,初始化随机数生成器,使本例中的结果可重复。

rng (1,“旋风”);

将生成器设置保存在一个结构中年代

s =提高;

创建一个1到10之间的随机整数值数组。

A =兰迪(10、3、3)
一个=3×35 4 2 8 2 4 1 1 4

重复执行相同的命令。

A =兰迪(10、3、3)
一个=3×36 3 7 5 9 5 7 1

第一个呼叫兰迪改变了生成器的状态,所以第二个结果是不同的。

现在,将生成器返回到存储的原始状态年代复制第一个数组一个

rng(年代);A =兰迪(10、3、3)
一个=3×35 4 2 8 2 4 1 1 4

与重新播种(重新初始化生成器)不同,这种方法允许您在任何点保存和恢复生成器设置。

另请参阅

相关的话题