主要内容

生成不同的随机数

此示例显示如何避免在MATLAB时重复相同的随机数阵列®重启。当您想要将来自在不同的MATLAB会话处执行的相同随机数命令组合时,此技术非常有用。

所有随机数函数,兰特兰德兰迪, 和兰培姆,从共享随机数生成器绘制值。每次启动MATLAB时,发电机都将自身重置为同一状态。因此,诸如兰特(2,2)在启动后立即执行它的时间返回相同的结果。此外,随机数函数调用随机数函数的任何脚本或函数返回相同的结果。

获得不同随机数的一种方法是每次使用不同的种子初始化生成器。这样做可确保您不会从上一个会话中重复结果。

执行RNG('Shuffle')在调用任何随机数函数之前,在MATLAB会话中命令一次。

RNG('洗牌'

您可以在MATLAB命令窗口中执行此命令,或者您可以将其添加到启动文件中,这是MATLAB每次重新启动时执行的特殊脚本。

现在,执行随机数命令。

a = rand(2,2);

每次打电话RNG('Shuffle'),它使用基于当前时间使用不同的种子来重新使用不同的种子。

笔记

发电机的频繁重定义不会改善输出的统计特性,并且不会在任何真实意义上使输出更随机。重新启动MATLAB或运行涉及随机数的大型计算之前,重新定义可能很有用。但是,在会话中经常在会话中进行重新定义不是一个好主意,因为随机数的统计属性可能会受到不利影响。

或者,在不同的MATLAB会话中明确地指定不同的种子。例如,在一个MATLAB会话中生成随机数。

RNG(1);a = rand(2,2);

使用不同的种子在另一个Matlab会话中生成随机数。

RNG(2);b =兰特(2,2);

阵列一种B.是不同的,因为发电机在每个调用之前用不同的种子初始化兰特功能。

要生成保证不重叠的多个独立流,并且已经执行了展示流之间的值的独立性的测试,可以使用randstream.create.。有关生成多个流的详细信息,请参阅多个流

也可以看看

相关话题