主要内容

管理全球流使用RandStream

兰德,randn,兰迪,randperm从一个潜在的随机数流函数画随机数,叫做全球流。是一个全球流RandStream对象。一个简单的方法来控制全球流是使用rng函数。更全面的控制RandStream类允许您创建一个单独的流从全球流,处理全球流和控制随机数生成。

使用rng设置默认种子的随机数发生器(0)和算法(梅森素数捻线机)。保存生成器设置。

rng (“默认”)s = rng
s =结构体字段:类型:“龙卷风”种子:0状态:x1 uint32 [625]

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

x =兰德(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:金字塔

改变发电机的种子和算法,创建一个新的随机行向量。显示当前全球流兰德生成随机数。

rng (1,“philox”)xnew =兰德(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 =兰德(1,6)
xold =1×60.8147 0.9058 0.1270 0.9134 0.6324 0.0975

默认情况下,随机数生成函数,如兰德使用全球随机数流。指定一个不同的流,创建另一个RandStream对象。把它作为第一个输入参数兰德。例如,创建一个1-by-6向量的随机数梅森素数捻线机使用SIMD-oriented快。

myStream = RandStream (“dsfmt19937”)
myStream = dsfmt19937随机流种子:0 NormalTransform:金字塔
r =兰德(myStream 1 6)
r =1×60.0306 0.2131 0.2990 0.3811 0.8635 0.1334

当你打电话给兰德函数与myStream作为第一个输入参数,它吸引了数量myStream并且不影响全球流的结果。

如果你想设置myStream作为一个全球流,您可以使用RandStream.setGlobalStream对象的功能。

RandStream.setGlobalStream globalStream = RandStream.getGlobalStream (myStream)
globalStream = dsfmt19937随机流(当前全球流)种子:0 NormalTransform:金字塔

在许多情况下,rng函数是所有你需要控制全球流,但是RandStream类允许控制一些高级特性,比如选择算法用于正常的随机值。

例如,创建一个RandStream对象和指定转换算法来生成正态分布在使用伪随机值randn。产生正态分布使用伪随机值极地转换算法,而不是默认的金字形神塔转换算法。

myStream = RandStream (“mt19937ar”,“NormalTransform”,“极地”)
myStream = mt19937ar随机流种子:0 NormalTransform:极性的

myStream随着全球流。从全球创建6与正态分布随机数流。

RandStream.setGlobalStream (myStream) randn (1,6)
ans =1×60.2543 -0.7733 -1.7416 0.3686 0.5965 -0.0191

另请参阅

|

相关的话题