本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

生成不同的随机数

本示例显示在 MATLAB® 重新启动时如何避免重复生成相同的随机数数组。当您要将不同的 MATLAB 会话中执行的相同随机数命令结果合并在一起时,这种技术非常有用。

所有随机数函数(randrandnrandirandperm)均可从共享随机数生成器中抽取值。每次启动 MATLAB 时,生成器均复位到相同的状态。因此,当启动后立即执行计算的任何时候,类似 rand(2,2) 的命令均返回相同的结果。此外,无论何时重新启动,任何调用随机数函数的脚本或函数均返回相同的结果。

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

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

rng('shuffle')

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

现在执行随机数命令。

A = rand(2,2);

在每次调用 rng('shuffle') 时,它都根据当前的时间使用不同的种子重新设定生成器的种子。

再者,可以明确地指定不同的种子。例如,

rng(1);
A = rand(2,2);
rng(2);
B = rand(2,2);

数组 AB 不同,因为在每次调用 rand 函数之前,都会用不同的种子对生成器进行初始化。

注意

频繁地重新设定生成器的种子既不会改进输出的统计特性,也不会在真正意义上使输出更加随机。在重启 MATLAB 时或在运行涉及随机数的大型计算之前重新设定种子非常有用。然而,在一个会话中过于频繁地重新设定生成器的种子并不是理想的做法,因为随机数的统计特性会受到不利影响。

另请参阅

相关主题