RandStream
的兰德
,randn
,兰迪
,randperm
函数从底层随机数流中绘制随机数,称为全球流.全球流是一个RandStream
对象。控件控制全局流的一个简单方法是使用rng
函数。要进行更全面的控制,请使用RandStream
类使您能够从全局流创建一个单独的流,获得全局流的句柄,并控制随机数生成。
使用rng
若要将随机数生成器设置为默认种子(0
)和算法(Mersenne Twister)。保存发电机设置。
rng (“默认”) s = RNG
s =带字段的结构:类型:'twister'种子:0状态:[625x1 uint32]
创建一个均匀分布的0到1之间的随机值的1 × 6行向量。
X = rand(1,6)
x =1×60.8147 0.9058 0.1270 0.9134 0.6324 0.0975
使用RandStream.getGlobalStream
返回全局流的句柄,即当前全局流的句柄兰德
生成随机数。如果你使用RandStream.getGlobalStream
要获得全局流的句柄,您可以查看使用对全局流所做的更改rng
.
globalStream = RandStream.getGlobalStream
globalStream = mt19937ar随机流(当前全局流)种子:0 NormalTransform: Ziggurat
更改生成器种子和算法,并创建一个新的随机行向量。显示当前的全球潮流兰德
生成随机数。
rng (1,“philox”) xnew = rand(1,6)
xnew =1×60.5361 0.2319 0.7753 0.2390 0.0036 0.5262
globalStream = RandStream.getGlobalStream
globalStream = philox4x32_10随机流(当前全局流)种子:1 NormalTransform:反转
接下来,恢复原始生成器设置并创建一个随机向量。结果与原来的行向量匹配x
使用默认生成器创建。
Rng (s) xold = rand(1,6)
xold =1×60.8147 0.9058 0.1270 0.9134 0.6324 0.0975
缺省情况下,有随机数生成函数,如兰德
,使用全局随机数流。要指定不同的流,请创建另一个流RandStream
对象。将其作为第一个输入参数传递给兰德
.例如,使用面向simd的快速梅森扭扭器创建一个1乘6的随机数向量。
myStream = RandStream(“dsfmt19937”)
myStream = dsfmt19937随机流种子:0 NormalTransform: Ziggurat
r = rand(myStream,1,6)
r =1×60.0306 0.2131 0.2990 0.3811 0.8635 0.1334
当你打电话给兰德
函数与myStream
作为第一个输入参数,它从myStream
并且不影响全局流的结果。
如果你想设置myStream
作为全局流,您可以使用RandStream.setGlobalStream
对象的功能。
RandStream.setGlobalStream(myStream) globalStream = RandStream.getGlobalStream
globalStream = dsfmt19937随机流(当前全局流)种子:0 NormalTransform: Ziggurat
在许多情况下,rng
函数是控制全局流所需的全部内容,但是RandStream
类允许控制一些高级特性,例如选择用于正常随机值的算法。
例如,创建一个RandStream
对象,并指定生成正态分布伪随机值的转换算法randn
.方法生成正态分布伪随机值极地
转换算法,而不是默认值金字形神塔
转换算法。
myStream = RandStream(“mt19937ar”,“NormalTransform”,“极地”)
myStream = mt19937ar随机流种子:0 NormalTransform: Polar
集myStream
作为全球流。从全局流中创建6个正态分布的随机数。
RandStream.setGlobalStream (myStream) randn (1,6)
ans =1×60.2543 -0.7733 -1.7416 0.3686 0.5965 -0.0191