在 MATLAB 中,rng 函数是控制随机数生成器 (RNG) 状态的重要工具。RNG 是一组用于生成伪随机数的算法,其状态会影响生成的随机数序列。

MATLAB 中使用 rng 函数控制随机数生成MATLAB 中使用 rng 函数控制随机数生成


MATLAB 中使用 rng 函数控制随机数生成


rng 函数的语法

rng(seed)

其中:

seed 是用于初始化 RNG 状态的种子值。相同种子将产生相同的随机数序列。

使用 rng 函数

在 MATLAB 中,通常建议在脚本或函数的开头使用 rng 函数来设置 RNG 的种子,以确保每次运行都能产生可重复的随机数序列。这对于调试、验证和比较结果至关重要。

例如:

```matlab % 设置 RNG 种子以获得可重复的结果 rng(12345);

% 生成 10 个随机数 random_numbers = randn(10, 1);

% 再次运行代码,使用相同的种子 rng(12345); random_numbers_again = randn(10, 1);

% 检查随机数序列是否相同 if isequal(random_numbers, random_numbers_again) disp('随机数序列相同,RNG 种子有效'); end ```

注意: 如果不设置种子,则 RNG 会使用与计算机时间相关的默认种子,这会导致每次运行生成不同的随机数序列。

指定 RNG 类型

除了设置种子外,rng 函数还可以指定要使用的 RNG 类型。MATLAB 提供了多个 RNG 类型,包括:

'twister':默认 RNG 类型,适用于大多数应用。 'mt19937ar':另一种伪随机数生成器,具有更好的分布特性。 'sfc64':基于分裂共轭的伪随机数生成器,适用于高性能计算。

要指定 RNG 类型,请使用以下语法:

```matlab rng(seed, 'Type', 'mt19937ar'); ```

其他 rng 函数

除了 rng 函数之外,MATLAB 还提供了其他用于处理 RNG 状态的函数:

randseed:返回当前 RNG 的种子。 rand('state'):返回 RNG 的当前状态。 rand('state', state):设置 RNG 的状态。