主要内容

生成可重复的随机数

指定种子

此示例显示如何首先指定种子来重复随机数阵列。每次使用相同种子初始化生成器时,您都会得到相同的结果。

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

RNG(“默认”);

现在,使用种子初始化发电机1

RNG(1);

然后,创建一系列随机数。

a = rand(3,3)
A = 0.4170 0.3023 0.1863 0.7203 0.1468 0.3456 0.0923 0.0923 0.3968

重复相同的命令。

a = rand(3,3)
a = 0.5388 0.2045 0.6705 0.4192 0.8781 0.4173 0.0274 0.0274 0.5587

第一次打电话兰特改变了发电机的状态,因此第二个结果是不同的。

现在,使用与以前相同的种子重新初始化发电机。然后再现第一矩阵,一种

RNG(1);a = rand(3,3)
A = 0.4170 0.3023 0.1863 0.7203 0.1468 0.3456 0.0923 0.0923 0.3968

在某些情况下,单独设置种子不会保证相同的结果。这是因为当代码执行时,随机数函数从随机数函数抽取的发电机可能不同。对于长期可重复性,请将种子和发电机类型一起指定在一起。

例如,以下代码将种子设置为1和Mersenne Twister的发电机。

RNG(1,'twister');

当您想要时,将种子和发电机类型设置在一起:

  • 确保您今天写的代码行为返回相同的结果,当您在未来的MATLAB中运行该代码®发布。

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

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

看看RNG.可用生成器列表的参考页面。

保存并恢复发电机设置

此示例显示如何通过保存和恢复生成器设置来创建可重复的随机数阵列。保存和恢复生成器设置的最常见原因是以算法或迭代以特定点生成的随机数。例如,您可以使用生成器设置作为调试的援助。与重新初始化发电机的重新定义不同,此方法允许您在任何时候保存和恢复发电机设置。

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

RNG(1,'twister');

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

a = randi(10,3,3)
A =3×35 4 2 8 2 4 1 1 4

第一次打电话兰迪改变了发电机的状态。第一次调用后保存发电机设置兰迪在一个结构中S.

s = RNG;

在1到10之间创建另一个随机整数值。

a = randi(10,3,3)
A =3×36 3 7 5 9 5 7 1 6

现在,将生成器返回到存储在中的先前状态S.并重现第二个阵列一种

RNG;a = randi(10,3,3)
A =3×36 3 7 5 9 5 7 1 6

也可以看看

相关话题