主要内容

rng

控制随机数发生器

描述

例子

rng (种子指定MATLAB的种子®随机数发生器。例如,rng (1)的种子初始化梅森扭扭器生成器1

rng函数控制全球流,这决定了如何兰德兰迪randn,randperm函数产生一个随机数序列。若要创建一个或多个与全局流分离的独立流,请参见RandStream而且RandStream.create

例子

rng (种子发电机还指定要使用的随机数生成器的类型。例如,rng (0, ' philox ')的种子初始化Philox 4x32随机生成器0

例子

S = RNG返回结构中的当前随机数生成器设置年代

例子

全部折叠

将随机数生成器设置为默认种子(0)和算法(Mersenne Twister),然后保存发电机设置。

rng (“默认”) s = RNG
s =带字段的结构:类型:'twister'种子:0状态:[625x1 uint32]

创建一个0到1之间的随机值的1乘5行向量。

X = rand(1,5)
x =1×50.8147 0.9058 0.1270 0.9134 0.6324

更改生成器种子和算法,并创建一个新的随机行向量。

rng (1,“philox”) xnew = rand(1,5)
xnew =1×50.5361 0.2319 0.7753 0.2390 0.0036

现在恢复原始生成器设置并创建一个随机矢量。结果与原来的行向量匹配x使用默认生成器创建。

Rng (s) xold = rand(1,5)
xold =1×50.8147 0.9058 0.1270 0.9134 0.6324

输入参数

全部折叠

生成器初始化,指定为以下选项之一。

价值 描述
0 用种子初始化生成器0
正整数 使用指定的正整数种子初始化生成器,例如1
“默认” 用种子初始化梅森扭扭器生成器0.这是每个MATLAB会话开始时的默认设置。
“洗牌” 基于当前时间初始化生成器,从而在每次调用后产生不同的随机数序列rng
结构 根据包含字段的结构中的设置初始化生成器类型种子,状态

随机数算法,指定为表中的选项之一。有关生成器算法的更多信息,请参见创建和控制随机数流

价值 发电机的名字 发电机的关键字
“旋风” 梅森素数捻线机 mt19937ar
“simdTwister” simd导向的快速梅森扭扭机 dsfmt19937
“combRecursive” 组合多重递归 mrg32k3a
“multFibonacci” 乘法滞后斐波那契 mlfg6331_64
“philox” Philox 4x32发电机,10发子弹 philox4x32_10
“threefry” 三炸4x64发电机,20发子弹 threefry4x64_20

对于MATLAB 4.0和5.0版本中使用的遗留生成器,请使用这些选项之一。

价值 发电机的名字 发电机的关键字
v4的 遗留的MATLAB版本4.0生成器 mcg16807
“v5uniform” 遗留的MATLAB 5.0版统一生成器 swb2712
“v5normal” 传统MATLAB 5.0版正规生成器 shr3cong

提示

  • 执行并行处理时,不要使用rng(“洗牌”)在不同的worker上设置随机数流,以确保流是独立的,因为它基于当前时间为随机数生成器播种。当命令被同时发送给多个工作线程时,尤其如此parfor的工作。对于worker上的独立流,使用默认行为或考虑在每个worker上使用唯一的子流RandStream

  • 在执行并行处理时,MATLAB客户端和MATLAB工作者上的默认随机数生成器是不同的。如果您需要在客户机和工作者上生成相同的随机数字流,您可以使用rng使用相同的发电机类型和种子(或考虑使用RandStream使用相同的生成器类型、种子和正常转换算法)。有关更多信息,请参见控制工人上的随机数流(并行计算工具箱)

  • 使用rng而不是兰德randn函数具有“种子”“状态”,或“旋风”输入,看到替换rand和randn的不鼓励语法

扩展功能

在R2011a中引入