主要内容

管理全局流使用randstream.

兰特兰德兰迪,兰培姆函数从底层随机数流绘制随机数,称为全球流.全局流是randstream.目的。控制全局流的简单方法是使用rng功能。更全面的控制,randstream.类使您可以从全局流创建一个单独的流,获取到全局流的句柄,并控制随机数生成。

rng将随机数生成器设置为默认种子(0.)和算法(Mersenne Twister)。保存生成器设置。

rng (“默认”)S = RNG
s =结构与字段:类型:'Twister'种子:0状态:[625x1 UINT32]

在0和1之间创建一个1×6行向量的均匀分布式随机值。

x =兰特(1,6)
X =1×6.0.8147 0.9058 0.1270 0.9134 0.6324 0.0975

RandStream.getGlobalStream返回全局流的句柄,即当前的全局流兰特从中生成随机数。如果你使用RandStream.getGlobalStream要获得全局流的句柄,您可以看到您使用的全局流的更改rng

globalstream = randstream.getglobalstream.
globalStream = mt19937ar random stream (current global stream) Seed: 0

更改发电机种子和算法,并创建一个新的随机行向量。显示当前的全局流兰特从中生成随机数。

RNG(1,'Philox')Xnew =兰特(1,6)
Xnew =1×6.0.5361 0.2319 0.7753 0.2390 0.0036 0.5262
globalstream = randstream.getglobalstream.
GlobalStream = Philox4x32_10随机流(当前全局流)种子:1 qualmetransform:反转

接下来,恢复原始生成器设置并创建随机向量。结果与原始行向量匹配X使用默认生成器创建。

rng(s)xold = rand(1,6)
XOLD =1×6.0.8147 0.9058 0.1270 0.9134 0.6324 0.0975

默认情况下,随机数生成函数,例如兰特,使用全局随机数流。要指定不同的流,请创建另一个流randstream.目的。将其作为第一个输入参数传递给兰特.例如,使用SIMD导向的Fast Mersenne Twister创建一个1×6向量的随机数向量。

mystream = randstream(“dsfmt19937”
myStream = dsfmt19937随机流种子:0 NormalTransform: Ziggurat
r =兰德(myStream 1 6)
r =1×6.0.0306 0.2911 0.2990 0.3811 0.8635 0.1334

当你调用兰特功能myStream作为第一个输入参数,它绘制了数字myStream并且不会影响全球流的结果。

如果你想设置myStream作为全球流,您可以使用randstream.setglobalstream.对象功能。

randstream.setglobalstream(mystream)globalstream = randstream.getglobalstream
GlobalStream = DSFMT19937随机流(当前全局流)种子:0 IncormalTransform:Ziggurat

在许多情况下,rng功能是您需要控制全局流的只是randstream.类允许控制某些高级功能,例如用于正常随机值的算法的选择。

例如,创建一个randstream.对象并指定在使用时生成正常分布的伪随机值的转换算法兰德.使用常规分布伪随机数值极地转换算法,而不是默认Ziggurat.转换算法。

mystream = randstream('mt19937ar''nuarmtransform''极性'
MyStream = MT19937AR随机流种子:0 IncorMaltransform:极

myStream作为全球流。创建6个随机数,具有从全局流的正常分布。

randstream.setglobalstream(mystream)randn(1,6)
ans =.1×6.0.2543 -0.7733 -1.7416 0.3686 0.5965 -0.0191

也可以看看

|

相关的话题