主要内容

取代气馁rand的语法和randn

气馁的描述语法

在早期版本的MATLAB®,你使用的随机数发生器控制兰德randn功能与“种子”,“状态”“旋风”输入。例如:

兰特(“种子”,sd) randn(“种子”,sd)兰德(状态,年代)randn(状态,年代)兰德(“龙卷风”,5489年)

这些语法指不同类型的发电机,它们不再推荐以下原因:

  • 条款“种子”“状态”发电机是带有误导性的名字。

  • 所有的发电机除外“旋风”是有缺陷的。

  • 他们不必要地使用不同的发电机兰德randn

评估的影响取代泄气的语法你现有的代码,执行以下命令在MATLAB会话的开始:

警告(“上”,MATLAB: RandStream: ActivatingLegacyGenerators)警告(“上”,MATLAB: RandStream: ReadingInactiveLegacyGeneratorState)

替代语法的描述

使用rng函数来控制发电机使用的共享兰德,randn,兰迪和其他所有随机数生成函数randperm,sprand,等等。学习如何使用rng函数替换气馁语法时,花一些时间了解其功能。这应该有助于你看到新rng语法最适合您的需要。

第一个输入兰特(发电机,年代)randn(发电机,s)指定的类型发电机,所述。

发电机=“种子”指的是MATLABv4发电机,而不是种子的初始化值。

发电机= '国家'指的是MATLABv5发电机,发电机的内部状态。

发电机=“旋风”指的是梅森素数捻线机发电机,现在MATLAB启动发电机。

v4v5发电机不再推荐,除非你正试图完全重现在MATLAB的早期版本中生成的随机数。最简单的方法来更新你的代码是使用rng。的rng函数的名称替换兰德randn发电机如下。

兰特/ randn发生器的名字 提高发电机的名字
“种子” v4的
“状态”

“v5uniform”(兰德)

“v5normal”(randn)

“旋风” “旋风”(推荐)

替代语法与整数种子初始化发生器

最常见的使用整数种子sd兰特(发电机,sd)语法是:

  • 复制相同的随机数每次(例如,通过使用一个种子如0、1或3141879)

  • 试图确保MATLAB总是给不同的随机数在单独运行(例如,通过使用一个种子等总和(100 *时钟))

下面的表显示了替代语法与整数的种子sd

  • 第一列显示气馁的语法兰德randn

  • 第二列显示了如何准确地再现气馁与新行为rng函数。在大多数情况下,这是通过指定一个遗留的发电机类型如v4或v5发电机,不再推荐。

  • 第三列显示了建议的替代,它没有指定可选的发电机类型的输入rng。因此,如果你总是省略了发电机输入,兰德,randn,兰迪只使用默认的梅森素数的旋风生成器,用于MATLAB启动。在将来的版本中,当新发电机取代梅森素数的旋风,这段代码将使用新的默认。

气馁兰德/ randn语法 不推荐:气馁繁殖行为完全通过指定生成器类型 建议选择:不覆盖发电机类型
兰特(“龙卷风”,5489年) rng(5489年,“旋风”) rng(“违约”)
兰特(“种子”,sd) rng (sd, v4) rng (sd)
randn(“种子”,sd)
兰特(“状态”,sd) rng (sd v5uniform)
randn(“状态”,sd) rng (sd v5normal)
兰特(“种子”,总和(100 * 24小时)) rng(总和(100 *时钟),v4) rng(“洗牌”)

替代语法为初始化状态向量发生器

最常见的使用状态向量(如图所示)兰特(发电机、圣)语法准确复制产生的随机数在特定的点在一个算法或迭代。例如,您可以使用这个向量作为帮助调试。

rng函数变化的模式保存和恢复状态的随机数字生成器,下表所示。左列中的示例假设您正在使用v5统一的发电机。正确的列中的示例使用新语法,和适用于任何你使用发电机。

使用兰德/ randn气馁的语法 新语法使用rng
%保存v5发电机状态。圣=兰德(的状态);%叫兰德。x =兰德;%恢复v5发电机状态。兰特(“状态”,圣);%又叫兰德希望%为相同的结果。y =兰德
%得到发电机设置。s =提高;%叫兰德。x =兰德;%恢复以前的发电机%设置。rng(年代);%再次调用兰特和%得到相同的结果。y =兰德

演示,看到这个教学视频

如果你不能升级从沮丧的语法

如果有代码,您不能或不允许修改,你知道它使用气馁随机数发生器控制语法,重要的是要记住,当你使用MATLAB将切换到代码传统模式。在传统模式下,兰德randn由单独的发电机控制,每个都有自己的设置。

调用兰德在传统模式下使用下列之一:

  • v4的控制的发电机,兰特(“种子”,…)

  • “v5uniform”控制的发电机,兰特(“状态”,…)

  • “旋风”控制的发电机,兰特(“龙卷风”,…)

调用randn在传统模式下使用下列之一:

  • v4的控制的发电机,randn(“种子”,…)

  • “v5normal”控制的发电机,randn(“状态”,…)

如果代码依赖于将MATLAB放入遗留模式,使用以下命令摆脱遗留模式,回到默认启动发电机:

rng违约

另外,保护周围将MATLAB遗留模式的代码,使用:

s = rng %保存当前设置的发电机……%使用遗留随机数发生器语法调用代码。rng (s) %恢复以前设置的发电机。

另请参阅

||

相关的话题