拟随机数字生成器(QRNG)生产单位超胶井的高度均匀样品。QRNG最小化差异生成点的分布与超立方体均匀分割的每个子立方体中点的比例相等的分布之间。因此,QRNGs系统地填补了生成的准随机序列的任何初始片段中的“空洞”。
与描述中描述的伪随机序列不同常见的伪随机数生成方法,准随机序列失败了随机性的许多统计测试。然而,近似真正的随机性不是他们的目标。准随机序列寻求均匀地填补空间,并以这样的方式这样做,初始段近似于指定密度。
QRNG应用程序包括:
拟蒙特卡罗积分。Monte Carlo技术通常用于评估困难,多维积分而没有闭合溶液。QMC使用准随机序列来改善这些技术的收敛性。
空间填充实验设计。在许多实验设置中,在每个因素设置进行测量是昂贵的或不可行的。拟随机序列提供了设计空间的高效、均匀采样。
全局优化。优化算法通常在初始值附近寻找局部最优值。利用初始值的准随机序列,搜索全局最优,均匀抽样所有局部极小点的吸引域。
想象一下,一个简单的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]
:
统计和机器学习工具箱™功能支持这些准随机序列:万博1manbetx
准随机序列是来自正整数的函数到单元HyperCube。在申请中有用,是最初的点集必须生成序列的。点集是大小矩阵N.——- - - - - -D.,在那里N.点数是多少和D.为被采样超立方体的维数。的函数haltonset
和sobolset.
构造具有指定拟随机序列性质的点集。点集的初始段由净
的方法haltonset
和sobolset.
类,但可以使用括号索引来生成和访问点,并访问积分。
由于产生了准随机序列的方式,它们可以包含不希望的相关性,特别是在其初始段中,特别是在更高的尺寸中。要解决此问题,则准随机点经常设置跳过那飞跃过度,或者争夺序列中的值。的haltonset
和sobolset.
函数允许您同时指定a跳过
和一个飞跃
准随机序列的财产,以及争夺
的方法haltonset
和sobolset.
类允许您申请各种扰扰技术。加扰减少了相关性,同时还提高了均匀性。
这个例子展示了如何使用haltonset
构造一个二维Halton拟随机点集。
创建一个haltonset
目的P.
,跳过序列的前1000个值,然后保留每十八点。
rng默认%的再现性p = haltonset(2,'跳过'1 e3,“飞跃”1 e2)
p = Halton点设置在2个维度(89180190640991点)属性:跳跃:1000跳跃:100 ScrambleMethod: none
物体P.
封装指定的准随机序列的属性。点集是有限的,长度决定跳过
和飞跃
属性和点集指数的大小限制。
使用争夺
应用逆基数置乱。
p =争夺(p,“RR2”)
P = Halton Point设置在2个尺寸(89180190640991点)属性:跳过:1000 Leap:100 Scrambermethod:RR2
使用净
来生成前500个点数。
x0 = net(p,500);
这等价于
x0 = p(1:500,:);
点集的值X0
未生成并存储在内存中,直到您访问P.
使用净
或括号索引。
为了欣赏准随机数的性质,创建两个维度的散点图X0
。
散射(X0 (: 1), X0 (:, 2), 5,'r')轴广场标题('{\ bf准随机散射}')
将此与散射的突出的伪随机数字进行比较兰特
函数。
x =兰特(500,2);散射(x(:,1),x(:,2),5,'B')轴广场标题('{\ bf统一的随机散射}')
拟随机散射更加均匀,避免了伪随机散射中的聚集现象。
在统计学中,准随机数太均匀,以通过传统的随机性测试。例如,由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.
函数,用于生成序列拟随机输出,而不是特定大小的点集。流就像伪代码一样使用,比如兰特
当客户端应用程序需要间歇地访问的无限量大小的准随机数来源时。准随机流的属性,例如其类型(Halton或Sobol),维度,跳过,跳跃和争吵,在制造流时设置。
在实现中,拟随机流本质上是非常大的拟随机点集,尽管它们的访问方式不同。的状态一个准随机流的标量指数是流中取下一点的标量指数。使用Qrand.
的方法qrandstream.
类从流生成点,从当前状态开始。使用重置
方法将状态重置为1
。与点集不同,流不支持圆括号索引。万博1manbetx
此示例显示了如何从准随机点集生成样本。
使用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;结束