主要内容

生成拟随机数字

准随机序列

拟随机数字生成器(QRNG)生产单位超胶井的高度均匀样品。QRNG最小化差异生成点的分布与超立方体的均匀划分的每个子立方体中具有相同比例的点的分布之间。因此,qrng系统地在生成的准随机序列的任何初始片段中填充“空穴”。

与描述中描述的伪随机序列不同常见的伪随机数生成方法,拟随机序列不通过许多随机统计检验。然而,接近真正的随机性并不是他们的目标。拟随机序列寻求均匀地填充空间,并以这样一种方式来实现,即初始段近似这种行为达到指定的密度。

QRNG应用程序包括:

  • 准蒙特卡罗(QMC)积分。蒙特卡罗技术经常被用来计算困难的,多维积分,没有一个封闭的形式的解。QMC利用拟随机序列来改进这些技术的收敛性。

  • 空间填充实验设计。在许多实验设置中,对每个因素设置进行测量是昂贵的或不可行的。拟随机序列提供了有效的、均匀的设计空间采样。

  • 全局优化。优化算法通常在初值的邻域内寻找局部最优值。利用准随机初值序列,均匀采样所有局部最小值的吸引域来搜索全局最优。

例如:使用Scramble、Leap和Skip

想象一下,一个简单的1-D序列,从1到10中产生整数。这是基本序列和前三个点(1、2、3)

现在看看争夺跳过,飞跃协同工作:

  • 争夺-打乱以几种不同的方式打乱点数。在这个例子中,假设一个混乱将序列变成1,3,5,7,9,2,4,6,8,10.前三点是现在[1,3,5]

  • 跳过——一个跳过Value指定要忽略的初始点的数量。在本例中,设置跳过值为2.序列现在5、7、9、2、4、6、8、10前三点是[5,7,9]

  • 飞跃——一个飞跃Value指定每一个你要忽略的点数。继续使用跳过设置为2,如果你设置飞跃对于1,序列使用其他一点。在此示例中,序列现在5、9、4、8前三点是[5 9 4]

拟随机点集

统计和机器学习工具箱™功能支持这些准随机序列:金宝app

  • 哈尔顿序列。产生的haltonset函数。这些序列使用不同的填充基础以在每个维度中连续地形成单位间隔的均匀均匀分区。

  • Sobol序列。产生的sobolset.函数。这些序列以2为基数,形成单位区间的连续更精细的均匀分区,然后在每个维度重新排列坐标。

  • 拉丁超立方体序列。产生的lhsdesign函数。虽然在最小化差异的意义上这些序列不是准随机的,但这些序列仍然能产生在实验设计中有用的稀疏均匀样本。

准随机序列是来自正整数的函数到单元HyperCube。在申请中有用,是最初的点集必须生成一个序列。点集是大小矩阵N——- - - - - -D.,在那里N点数是多少D.为被采样的超立方体的维数。的函数haltonsetsobolset.构造具有特定拟随机序列性质的点集。点集的初始段由的方法haltonsetsobolset.类,但可以使用括号索引来生成和访问点,并访问积分。

由于产生了准随机序列的方式,它们可以包含不希望的相关性,特别是在其初始段中,特别是在更高的尺寸中。要解决此问题,则准随机点经常设置跳过飞跃过度,或者争夺序列中的值。的haltonsetsobolset.函数允许你指定两个跳过和一个飞跃准随机序列的财产,以及争夺的方法haltonsetsobolset.类允许您申请各种扰扰技术。加扰减少了相关性,同时还提高了均匀性。

生成拟随机点集

这个例子展示了如何使用haltonset构造一个二维Halton拟随机点集。

创建一个haltonset目的P.,跳过序列的前1000个值,然后保留每十八点。

rng默认%的再现性p = haltonset(2,“跳过”1 e3,“飞跃”1 e2)
p = Halton点设置在2维(89180190640991点)属性:跳过:1000跳过:100 ScrambleMethod:无

物体P.封装指定的准随机序列的属性。点集是有限的,长度决定跳过飞跃性质和对点集指数大小的限制。

使用争夺应用反向基数置乱。

p =争夺(p,“RR2”
P = Halton Point设置在2个尺寸(89180190640991点)属性:跳过:1000 Leap:100 Scrambermethod:RR2

使用生成前500点。

X0 =净(p, 500);

这个等价于

x0 = p(1:500,:);

点集的值X0未生成并存储在内存中,直到您访问P.使用或括号索引。

为了理解准随机数的性质,创建一个二维的散点图X0

散射(X0 (: 1), X0 (:, 2), 5,'r')轴广场标题('{\ bf准随机散射}'

图中包含一个轴对象。标题为空白Q u s i - R和空白sc te R的轴对象包含一个散点类型的对象。

将此与散射的突出的伪随机数字进行比较兰特函数。

x =兰特(500,2);散射(x(:,1),x(:,2),5,'B')轴广场标题('{\ bf统一的随机散射}'

图中包含一个轴对象。带有标题空白U N I空白的轴对象空白r a n d o m空白s c a t t e r包含类型散射的对象。

准随机散射更加均匀,避免了伪随机散射中的聚集现象。

在统计学中,准随机数太均匀,以通过传统的随机性测试。例如,由Kolmogorov-Smirnov测试进行键糟,用于评估点集是否具有均匀随机分布。当在均匀伪随机样品上反复执行时,例如由此产生的兰特,测试产生均匀分布P.- 值。

nTests = 1 e5;sampSize = 50;pvals =零(ntests,1);为了test = 1:ntests x = rand(Sampsize,1);[h,pval] = kstest(x,[x,x]);pvals(测试)= pval;结束直方图(PVALS,100) h = findobj(gca,“类型”'修补');Xlabel(“{\ p}值”) ylabel ('测试数量'

图中包含一个轴对象。轴对象包含类型直方图的对象。

在均匀的准随机样本上反复进行试验,结果有很大的不同。

p = haltonset (1,“跳过”1 e3,“飞跃”1 e2);p =争夺(p,“RR2”);nTests = 1 e5;sampSize = 50;pvals =零(ntests,1);为了test = 1:ntests x = p(测试:测试+(sampsize-1),:);[h,pval] = kstest(x,[x,x]);pvals(测试)= pval;结束直方图(pvals,100)xlabel(“{\ p}值”) ylabel ('测试数量'

图中包含一个轴对象。轴对象包含类型直方图的对象。

小的P.- 呼叫呼叫质疑数据是均匀分布的NULL假设。如果假设是真的,大约5%的时间P.-值预计将低于0.05。结果是非常一致的,他们没有挑战假设。

准随机流

准随机,由此产生qrandstream.函数,用于生成序列的准随机输出,而不是特定大小的点集。流的使用类似于pseudoRNGS,例如兰特,当客户端应用程序需要可以间歇访问的大小不定的准随机数源时。准随机流的属性,比如它的类型(Halton或Sobol)、维度、跳过、跳跃和混乱,在构造流时设置。

在实现中,准随机流本质上是非常大的准随机点集,尽管它们的访问方式不同。的状态准随机流的标量索引是从流中取下的下一个点的标量索引。使用Qrand.的方法qrandstream.类从流生成点,从当前状态开始。使用重置方法将状态重置为1.与点集不同,流不支持括号索引。金宝app

生成一个准随机流

此示例显示了如何从准随机点集生成样本。

使用haltonset创建准随机点集P.,然后重复将索引递增到点集中测试生成不同的样本。

p = haltonset (1,“跳过”1 e3,“飞跃”1 e2);p =争夺(p,“RR2”);nTests = 1 e5;sampSize = 50;pvals =零(ntests,1);为了test = 1:ntests x = p(测试:测试+(sampsize-1),:);[h,pval] = kstest(x,[x,x]);pvals(测试)= pval;结束

使用该方法也得到了同样的结果qrandstream.构造一个准随机流问:基于点集P.并让流处理索引的增量。

p = haltonset (1,“跳过”1 e3,“飞跃”1 e2);p =争夺(p,“RR2”);q = qrandstream (p);nTests = 1 e5;sampSize = 50;pvals =零(ntests,1);为了test = 1:ntests x = qrand(q,sampsize);[h,pval] = kstest(x,[x,x]);pvals(测试)= pval;结束

相关的话题