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

rng

控制随机数生成

说明

注意

要将 rng 函数(而非 randrandn)与 'seed''state''twister' 输入结合使用,请参阅有关更换不推荐的 rand 和 randn 语法的文档。

rng(seed) 使用非负整数 seed 为随机数生成器提供种子,以使 randrandirandn 生成可预测的数字序列。

rng('shuffle') 根据当前时间为随机数生成器提供种子。这样,randrandirandn 会在您每次调用 rng 时生成不同的数字序列。

rng(seed, generator)rng('shuffle', generator) 另外指定 randrandirandn 使用的随机数生成器的类型。generator 输入为以下项之一:

  • 'twister':梅森旋转

  • 'simdTwister':面向 SIMD 的快速梅森旋转算法

  • 'combRecursive':组合多递归

  • 'philox':执行 10 轮的 Philox 4×32 生成器

  • 'threefry':执行 20 轮的 Threefry 4×64 生成器

  • 'multFibonacci':乘法滞后 Fibonacci

  • 'v5uniform':传统 MATLAB® 5.0 均匀生成器

  • 'v5normal':传统 MATLAB 5.0 正常生成器

  • 'v4':传统 MATLAB 4.0 生成器

rng('default')randrandirandn 使用的随机数生成器的设置重置为其默认值。这样,会生成相同的随机数,就好像您重新启动了 MATLAB。默认设置是种子为 0 的梅森旋转生成器。

scurr = rng 返回 randrandirandn 使用的随机数生成器的当前设置。这些设置将在包含字段 'Type'、'Seed' 和 'State' 的结构体 scurr 中返回。

rng(s)randrandirandn 使用的随机数生成器的设置还原回之前用 s = rng 等命令捕获的值。

sprev = rng(...) 返回 randrandirandn 使用的随机数生成器的以前设置,然后更改这些设置。

示例

示例 1 - 检索和还原生成器设置

将当前生成器设置保存在 s 中:

s = rng;

调用 rand 以生成随机值向量:

x = rand(1,5)

x =

    0.8147    0.9058    0.1270    0.9134    0.6324

通过调用 rng 还原原始生成器设置。生成一组新的随机值并验证 xy 是否相等:

rng(s);
y = rand(1,5)

y =

    0.8147    0.9058    0.1270    0.9134    0.6324

示例 2 - 还原传统生成器的设置

使用传统生成器。

sprev = rng(0,'v5uniform')

sprev = 
     Type: 'twister'
     Seed: 0
    State: [625x1 uint32]

x = rand

x =

    0.9501

通过调用 rng 还原以前的设置。

rng(sprev)

扩展功能