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