准随机数生成器(QRNGs)产生高度均匀的单位超立方体样本。QRNGs最小化差异产生的点的分布,并用在超立方体的均匀划分的每一子立方体点的相等比例分布之间。其结果是,系统QRNGs填写所产生的准随机序列的任一初始段的“洞”。
与中描述的伪随机序列不同常见的伪随机数产生方法,准随机序列失败的随机性许多统计检验。逼近真实的随机性,但是,是不是他们的目标。准随机序列谋求均匀地填充空间,并且以这样的方式,初始段近似这种行为最多的特定密度这样做。
QRNG应用包括:
准蒙特卡洛(QMC)的集成。蒙特卡洛技术经常使用没有封闭形式解来评价困难,多维积分。QMC采用准随机序列,以提高这些技术的收敛性。
空间实验的设计。在许多实验设置,进行测量每因子设置是昂贵的或不可行的。准随机序列提供设计空间的高效,均匀采样。
全局优化。优化算法通常发现的初始值附近局部最优。通过使用初始值的准随机序列,全局最优搜索均匀地采样所有局部最小值的吸引盆。
假设有一个简单的1- d序列,它产生从1到10的整数。这是基本的顺序,前三个点是[1,2,3]
:
现在看看如何争夺
,跳跃
和飞跃
一起工作:
争夺
- 扰洗牌中的几种不同的方式一个点。在这个例子中,假定加扰接通序列插入1、3、5、7、9,2,4,6,8,10
。前三个点现在(1、3、5)
:
跳跃
- 一个跳跃
值指定初始点的数量以忽略。在这个例子中,设置跳跃
值为2。序列是5,7,9,2,4,6,8,10
前三点是(5、7、9)
:
飞跃
- 一个飞跃
值指定的点数为忽略你把每一个。继续与该示例跳跃
设置为2,如果你设置了飞跃
到1,序列使用了每一个点。在本例中,序列是now5,9,4,8
前三点是[5,9,4]
:
统计和机器学习工具箱™函数支持以下准随机序列:万博1manbetx
拟随机序列是从正整数到单位超立方体的函数。为了在应用中有用,首字母点集一个序列的必须生成。点集大小的矩阵n-通过-d,其中n是点的数量和d在超立方体的维度被采样。功能haltonset
和sobolset
构造点集与指定的准随机序列的性能。所述点集的初始段通过将所生成的净
的方法haltonset
和sobolset
类,但是点可以使用括号索引更普遍地生成和访问。
由于拟随机序列产生的方式,它们可能包含不希望看到的相关性,特别是在它们的初始片段中,特别是在高维空间中。为了解决这个问题,拟随机点集经常出现跳跃,飞跃结束了,或争夺值的序列。该haltonset
和sobolset
功能允许您指定一个都跳跃
和飞跃
拟随机序列的性质,以及争夺
的方法haltonset
和sobolset
类允许您应用各种打乱技术。置乱减少了相关性,同时提高了均匀性。
这个例子说明如何使用haltonset
构造2-d哈尔顿准随机点集。
创建一个haltonset
对象p
,跳过序列的前1000个值,然后保留每101个点。
RNG默认的%用于重现p = haltonset (2'跳跃',1E3,'飞跃',1E2)
P =哈尔顿点集在2个维度(89180190640991分)性状:跳过:1000飞跃:100 ScrambleMethod:无
的对象p
封装指定的准随机序列的属性。点集是有限的,其长度由跳跃
和飞跃
属性,并通过在点集索引的大小限制。
用争夺
运用逆向基数扰。
(p, p =争夺'RR2')
属性:跳跃:1000 Leap: 100 ScrambleMethod: RR2
用净
以产生第一500点。
X0 =净(P,500);
这相当于
X0 = p (1:50 0:);
点集的值X0
是否生成并存储在内存中,直到您访问p
使用净
或括号索引。
为感谢准随机数的性质,建立在两个维度的散点图X0
。
散射(X0(:,1),X0(:,2),5,“r”)轴广场标题(“{\ bf拟随机散射}”)
比较这与均匀伪随机数产生的散点兰德
函数。
X =兰德(500 2);散射(X (: 1) X (:, 2), 5,“b”)轴广场标题('{\bf均匀随机散射' ')
准随机散射出现更均匀,避免了在伪随机分散的结块。
在统计意义上,拟随机数过于均匀,无法通过传统的随机性检验。例如,由。执行的Kolmogorov-Smirnov测试kstest
,用于评估一个点集是否具有均匀随机分布。在均匀伪随机样本上重复执行时,如由兰德
,则检验结果为的均匀分布p值。
nTests = 1 e5;sampSize = 50;PVALS = 0 (nTests, 1);为nTests x = rand(sampSize,1);[h, pval] =键糟(x (x, x));PVALS(测试)= pval;结束直方图(PVALS,100)H = findobj(GCA,'类型',“补丁”);包含('{\它p} - 值')ylabel(测试的数量)
当在均匀的准随机样本反复执行的测试的结果有很大的不同。
P = haltonset(1,'跳跃',1E3,'飞跃',1E2);(p, p =争夺'RR2');nTests = 1 e5;sampSize = 50;PVALS = 0 (nTests, 1);为x = p(test:test+(sampSize-1),:);[h, pval] =键糟(x (x, x));PVALS(测试)= pval;结束直方图(PVALS 100)包含('{\它p} - 值')ylabel(测试的数量)
小p-值对数据均匀分布的原假设提出了质疑。如果假设是正确的,大约5%p- 值预计将下降低于0.05。结果是他们未能挑战假设非常一致。
拟随机流,由qrandstream
功能,用于生成顺序准随机的输出,而不是一个特定大小的点集。流用于像pseudoRNGS,如兰德
中,当客户端应用程序需要能够间歇地进行访问不定大小的准随机数的来源。准随机流的性质,如它的类型(哈尔顿或Sobol),尺寸,跳过,飞跃,以及加扰,该流被构造时被设置。
在实施中,准随机流本质上是非常大的准随机点集,虽然他们访问不同。该状态准随机流的要被从该流采取的下一个点的标量指标。使用qrand
的方法qrandstream
类从流中生成点,从当前状态开始。使用重启
方法的状态复位到1
。不像点集,流不支持括号索引。万博1manbetx
这个例子展示了如何从一个准随机点集生成样本。
用haltonset
来创建一个拟随机点集p
,然后重复将索引增加到点集测试
生成不同的样本。
P = haltonset(1,'跳跃',1E3,'飞跃',1E2);(p, p =争夺'RR2');nTests = 1 e5;sampSize = 50;PVALS = 0 (nTests, 1);为x = p(test:test+(sampSize-1),:);[h, pval] =键糟(x (x, x));PVALS(测试)= pval;结束
相同的结果,通过使用获得的qrandstream
构建一个拟随机流问
基于点集p
并让流照顾增量的指标。
P = haltonset(1,'跳跃',1E3,'飞跃',1E2);(p, p =争夺'RR2');Q = qrandstream(P);nTests = 1 e5;sampSize = 50;PVALS = 0 (nTests, 1);为1:nTests X = qrand(q,sampSize);[h, pval] =键糟(X (X, X));PVALS(测试)= pval;结束