主要内容

randstream.Create.

创建统计上独立的随机数流

描述

S.= randstream.Create(gentype的)所指定的统一伪随机数生成算法创建单个随机流gentyperandstream.list.返回所有可能的值gentype或者看看创建和控制随机数流有关发电机算法的详细信息。这randstream.功能是在需要创建单个流时更简洁的替代。

例子

[s1, s2,…) = RandStream.create (gentype“NumStreams”,n)创建N.随机数流。溪流在伪随机感受中独立。该流不一定独立于在其他时间创建的流。

笔记

并非所有生成器类型都支持多个流。金宝app使用乘法滞后的Fibonacci生成器('mlfg6331_64')或组合的多重递归生成器('MRG32K3A')创建多个流。

例子

[___) = RandStream.create (gentype名称,值的)控制使用一个或多个流的创建名称,值对。

例子

全部折叠

创建三个独立的流。从每个流生成随机数。检查它们之间的相关性。不同流之间的相关性并不完全为0,因为它们是根据分布的采样计算的。

(s1, s2、s3) = RandStream.create ('MRG32K3A'“NumStreams”3);r1 =兰德(s1, 100000, 1);r2 =兰德(s2, 100000, 1);r3 =兰德(s3, 100000, 1);corrcoef ((r1, r2, r3))
ans =3×31.0000 0.0016 -0.0019 0.0016 1.0000 -0.0012-0.0019 -0.0012 1.0000

您还可以从三个独立的流中创建一个流,并将其指定为全局流。

S2 = RANDSTREAM.CREATE('MRG32K3A'“NumStreams”3,'StreamIndices'2);RandStream.setGlobalStream (s2);

从全局流中生成随机数。

r = rand(100000,1);

使用该方法创建三个相互独立的流来模拟一维随机游动randstream.Create.

(s1, s2、s3) = RandStream.create ('MRG32K3A'“NumStreams”3);

从第一条流生成随机散步。首先,将其设置为全局流。使用第一个流从标准正态分布生成5,000个随机步骤。选择0处的起始位置并使用cumsum计算随机步骤的累积总和。绘制结果随机散步。

randstream.setGlobalstream(S1)DY1 = RANDN(5000,1);y1 = cumsum([0; dy1]);情节(Y1)

图中包含一个轴。轴包含一个线条类型的对象。

使用第二个和第三个流重复这个过程。在相同的坐标轴上绘制结果。

抓住;DY2 = RANDN(S2,5000,1);y2 = cumsum([0; dy2]);图(Y2)DY3 = RANDN(S3,5000,1);y3 = cumsum([0; dy3]);情节(Y3)持有

图中包含一个轴。轴包含3个类型线对象。

计算流之间的相关性。不同流之间的相关性并不完全为0,因为它们是根据分布的采样计算的。

C = corcof ([dy1 dy2 dy3])
C =3×31.0000 -0.0363 0.0155 -0.0363 1.0000 -0.0012 0.0155 -0.0012 1.0000

输入参数

全部折叠

随机数生成器算法,指定为字符向量或字符串标量命名随机数生成器。MATLAB®提供了几个生成器算法。下表总结了可用生成器算法的名称和键属性。有关更多信息,请参见创建和控制随机数流

名称 发电机 多流和子流支持金宝app 完全精确的近似周期
'mt19937ar' 梅森Twister(在MATLAB启动时默认使用的流) 没有 219937-1
“dsfmt19937” SIMD定向快速Mersenne Twister 没有 219937-1
'mlfg6331_64' 乘法滞后的斐波纳契发生器 是的 2124.(251.长度为2的流72.的)
'MRG32K3A' 组合多个递归发生器 是的 2191(263.长度为2的流127.的)
“philox4x32_10” 菲洛克斯4x32发电机,10发子弹 是的 2193(264.长度为2的流129.的)
“threefry4x64_20” 三层4x64发电机,20发子弹 是的 2514(2256.长度为2的流258.的)
'shr3cong' 移位寄存器发生器与线性同余发生器相加 没有 264.
'SWB2712' 通过借用发电机进行修改的减去 没有 21492
'mcg16807' 乘法总体发电机 没有 231.-2

名称-值对的观点

指定可选的逗号分离对名称,值参数。名称是参数名称和价值为对应值。名称必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:randstream.Create('MRG32K3A','NUMSTREAMS',3,'StreamIndices',2)

要创建的独立流的数量,指定为包含的逗号分隔对“NumStreams”一个正整数。

流指数,指定为逗号分隔的配对组成'StreamIndices'和正整数的矢量或正整数。指定此参数以将当前流索引到创建它的一组流中。默认值是1: N,在那里N.是值的价值“NumStreams”

随机数种子,指定为由'种子'和一个非负整数或“洗牌”.种子指定算法生成随机数的起点。“洗牌”基于当前时间创建一个种子。如果指定一个整数,它必须在0和2之间32.−1。

在MATLAB启动或运行模拟之前在创建流时,将生成器种子指定为初始化步骤。要重现流,每次都使用相同的种子。在使用多种种子时将产生多个随机数的序列,因此无法保证不同的序列在统计上独立。在这是重要的情况下,使用randstream.Create.使用多个输出来创建统计上独立的多个流。

利用变换算法从随机数流中生成正态分布的随机数兰德恩,指定为由“NormalTransform”还有一个算法名'Ziggurat''极性', 或者“反转”

返回单元格数组的选项,指定为逗号分隔对'celloutpul'和逻辑0.)或真正的1).如果您指定'celloutpul'作为真正的randstream.Create.返回流对象作为单元格数组的元素。

提示

通常,你叫randstream.Create.一旦在单个通行证或MATLAB会话开始时创建多个独立流。例如,您可以使用三个独立流[S1,S2,S3] = RANDSTREAM.CREATE('MRG32K3A','NUMSTREAMS',3)

或者,您可以从单独的呼叫中创建每个流randstream.Create.,但您必须指定适当的值gentype“NumStreams”'种子','StreamIndices'确保他们的独立性:

  • 指定相同的值gentype“NumStreams”,'种子'在每种情况下。

  • 指定不同的值'StreamIndices'每一次。所有的值都应该在中间1和价值“NumStreams”

例如,通过使用创建两个独立的流s1 = RandStream.create(“mrg32k3a”、“NumStreams”5“种子”,0,' StreamIndices ', 1)s2 = RandStream.create(“mrg32k3a”、“NumStreams”5“种子”,0,' StreamIndices ', 2)

介绍在R2008B.