在MATLAB的早期版本®,您控制了随机数发生器使用的兰特
和兰德
用来的功能'种子'
那“状态”
或'twister'
输入。例如:
Rand(‘seed’,sd) randn(‘seed’,sd) Rand(‘state’,s) randn(‘state’,s) Rand(‘twister’,5489)
这些语法引用了不同类型的生成器,并且由于以下原因不再推荐它们:
条款'种子'
和“状态”
是发电机的误导性的名称。
所有的发电机除了'twister'
是有缺陷的。
他们不必要地使用不同的发电机兰特
和兰德
.
要评估替换现有代码中的替换气馁的语法的影响,请在MATLAB会话开始时执行以下命令:
警告('在'那MATLAB: RandStream: ActivatingLegacyGenerators) 警告('在'那MATLAB: RandStream: ReadingInactiveLegacyGeneratorState)
使用rng
函数来控制所使用的共享生成器兰特
那兰德
那兰迪
以及所有其他随机数生成的功能兰培姆
那Sprand.
,等等。学习如何使用rng
函数替换不鼓励使用的语法时,请花一些时间来理解它们的功能。这应该能帮你找到新的rng
语法最适合您的需求。
第一个输入兰特(发电机,年代)
或randn(发电机,s)
如此处所述指定生成器的类型。
|
这v4.
和v5.
除非您尝试完全重现在早期版本的MATLAB中生成的随机数,否则不再推荐发电机。更新代码的最简单方法是使用rng
.这rng
函数替换了名称兰特
和兰德
发电机如下。
兰特/ randn发生器的名字 | 提高发电机的名字 |
---|---|
'种子' |
v4的 |
“状态” |
|
'twister' |
'twister' (受到推崇的) |
整数种子的最常见用途SD.
在兰特(发电机,SD)
语法是:
每次复制完全相同的随机数(例如,使用0、1或3141879等种子)
尝试确保MATLAB总是在不同的运行中给出不同的随机数(例如,通过使用种子,例如总和(100 *时钟)
)
下表显示了具有整数种子的语法的替代品SD.
.
第一列显示了不鼓励使用的语法兰特
和兰德
.
第二列显示了如何用新的恰好再现气馁的行为rng
函数。在大多数情况下,这是通过指定遗留生成器类型来实现的,例如v4或v5生成器,这不再被推荐。
第三列显示推荐的替代方案,不指定可选的发电机类型输入rng
.因此,如果你总是省略了发电机
输入,兰特
那兰德
,兰迪
只需使用Matlab Startup使用的默认Mersenne Twister Generator。在未来的发布时,新的生成器取代Mersenne Twister时,此代码将使用新的默认值。
令人沮丧的兰特/ randn语法 | 不推荐:通过指定生成器类型复制不鼓励的行为 | 推荐的替代方案:不覆盖生成器类型 |
---|---|---|
兰特(“龙卷风”,5489年) |
rng(5489年,“旋风”) |
RNG('默认') |
兰特('Seed',SD) |
rng (sd, v4) |
RNG(SD) |
randn(“种子”,sd) |
||
兰特('State',SD) |
RNG(SD,'v5Uniform') |
|
Randn('State',SD) |
rng (sd v5normal) |
|
兰特(“种子”,总和(100 * 24小时)) |
RNG(总和(100 *时钟),'v4') |
RNG('Shuffle') |
状态矢量最常见的用途(在这里显示为英石
)兰特(发电机,st)
语法是以算法或迭代以特定点生成的随机数完全再现。例如,您可以将此向量用作调试中的援助。
这rng
函数更改随机数生成器的保存和恢复状态的模式,如下表所示。左列中的示例假设您正在使用v5.
均匀的发电机。右栏中的示例使用新的语法,并适用于您使用的任何生成器。
不鼓励使用rand/randn | 使用RNG的新语法 |
---|---|
%保存V5生成状态。st =兰特('州');%叫兰德。x =兰德;%恢复v5发生器状态。兰特('国家',st);%调用rand再次调用rand,并希望百分比相同的结果。y = rand. |
获取生成器设置。s =提高;%叫兰德。x =兰德;恢复以前的生成器%设置。rng(年代);再次调用rand,得到相同的结果。y = rand. |
对于演示,请参阅此教学视频.
如果有你不能或不允许修改的代码,你知道它使用了不鼓励的随机数生成器控制语法,重要的是记住,当你使用这些代码MATLAB将切换到传统模式.在遗留模式下,兰特
和兰德
由单独的发电机控制,每个发电机都有自己的设置。
调用兰特
在遗留模式中使用以下之一:
这v4的
发电机,由此控制兰特(“种子”,…)
这“v5uniform”
发电机,由此控制兰特(“状态”,…)
这'twister'
发电机,由此控制兰德('twister',......)
调用兰德
在遗留模式中使用以下之一:
这v4的
发电机,由此控制randn(“种子”,…)
这“v5normal”
发电机,由此控制Randn('State',......)
如果您依赖于将MATLAB放入遗留模式的代码,请使用以下命令转义传统模式并返回默认启动生成器:
rng违约
或者,要保护将MATLAB的代码视为传统模式,请使用:
s = RNG%保存发电机的当前设置。...%呼叫代码使用遗留随机数生成器语法。RNG(s)%恢复发电机的先前设置。