拟随机数字生成器(QRNGs)产生高度统一的样本单位超立方体。QRNGs最小化差异之间的分布生成的点和一个分布相同比例的点在超立方体的每个所谓统一的分区。因此,QRNGs系统地填补这个“洞”在任何拟随机生成的初始段序列。
不像描述的伪随机序列常见的伪随机数生成方法拟随机序列失败很多随机性的统计测试。近似真实的随机性,然而,不是他们的目标。拟随机序列寻求填补空间均匀,在这样一种方式,初始段近似这种行为到指定的密度。
QRNG应用程序包括:
Quasi-Monte卡洛(QMC)集成。蒙特卡罗技术常用于评估困难,多维积分没有封闭的解。QMC使用拟随机序列来提高这些技术的收敛性质。
空间实验的设计。在许多实验设置,测量在每个因素设置是昂贵或不可行。拟随机序列提供高效、均匀采样的设计空间。
全局优化。优化算法通常在附近找到一个局部最优的初始值。通过使用拟随机序列的初始值,搜索全球最佳状态均匀样本吸引力的盆地局部最小值。
想象一下一个简单的一维序列,产生从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、序列使用其他点。在这个例子中,序列是现在5、9、4、8
第一个三分[5 9 4]
:
统计和机器学习工具箱™函数支持这些拟随机序列:金宝app
拟随机序列是函数的正整数单位超立方体。有用的应用程序,一个初始点集必须生成的序列。点集矩阵的大小n——- - - - - -d,在那里n分和的数量吗d超立方体的尺寸被取样。的函数haltonset
和sobolset
构造点集的属性指定拟随机序列。点集的初始段生成的净
的方法haltonset
和sobolset
类,但是可以生成和更广泛使用括号索引访问。
因为拟随机序列生成的方式,它们可能包含不良的相关性,特别是在他们最初的部分,特别是在更高的维度。为了解决这个问题,拟随机点集跳过,飞跃结束了,或争夺在一个序列值。的haltonset
和sobolset
函数允许您指定一个跳过
和一个飞跃
拟随机序列的性质,争夺
的方法haltonset
和sobolset
类允许您应用各种加扰技术。地降低相关性,同时改善均匀性。
这个例子展示了如何使用haltonset
拟随机点集构造一个二维哈尔顿。
创建一个haltonset
对象p
跳过第一个1000的值序列,然后保留每一个101点。
rng默认的%的再现性p = haltonset (2“跳过”1 e3,“飞跃”1 e2)
二维点集在p =哈尔顿(89180190640991分)属性:跳过:1000飞跃:100 ScrambleMethod:没有
的对象p
封装的属性指定拟随机序列。点集是有限的,长度决定的跳过
和飞跃
属性和限制点集大小的指标。
使用争夺
应用reverse-radix匆忙。
(p, p =争夺“RR2”)
二维点集在p =哈尔顿(89180190640991分)属性:跳过:1000飞跃: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测试执行的键糟
是用来评估是否点集均匀随机分布。当反复执行统一的伪随机样本,如生成的兰德
,测试产生的均匀分布p值。
nTests = 1 e5;sampSize = 50;PVALS = 0 (nTests, 1);为测试= 1:nTests x =兰德(sampSize, 1);[h, pval] =键糟(x (x, x));PVALS(测试)= pval;结束直方图(PVALS 100) h = findobj (gca),“类型”,“补丁”);包含(“{\ p}值”)ylabel (测试的数量)
当测试的结果有很大的不同是对制服进行反复拟随机样本。
p = haltonset (1,“跳过”1 e3,“飞跃”1 e2);(p, p =争夺“RR2”);nTests = 1 e5;sampSize = 50;PVALS = 0 (nTests, 1);为测试= 1:nTests x = p(测试:测试+ (sampSize-1):);[h, pval] =键糟(x (x, x));PVALS(测试)= pval;结束直方图(PVALS 100)包含(“{\ p}值”)ylabel (测试的数量)
小p值质疑数据的零假设是均匀分布的。如果这个假设是正确的,大约5%的p预计值低于0.05。结果在他们未能挑战假说是一致的。
拟随机流产生的,qrandstream
函数,用于生成顺序拟随机输出,而不是一个特定大小的点集。使用流像pseudoRNGS,等兰德
,当客户端应用程序需要拟随机数量的不定大小可以间歇性地访问。拟随机流的性质,如它的类型(哈尔顿或Sobol)、尺寸、跳跃,跳跃,和争夺,当流构造。
在实现中,拟随机流基本上是非常大的拟随机点集,尽管他们以不同的方式访问。的状态拟随机流的下一个点的标量指数从流。使用qrand
的方法qrandstream
类来生成流点,从当前状态。使用重置
重置状态的方法1
。与点集,流不支持括号索引。金宝app
这个例子展示了如何从一个拟随机生成样本点集。
使用haltonset
创建一个拟随机点集p
,然后多次增量索引点集测试
生成不同的样品。
p = haltonset (1,“跳过”1 e3,“飞跃”1 e2);(p, p =争夺“RR2”);nTests = 1 e5;sampSize = 50;PVALS = 0 (nTests, 1);为测试= 1:nTests x = p(测试:测试+ (sampSize-1):);[h, pval] =键糟(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 = 0 (nTests, 1);为测试= 1:nTests X = qrand (q, sampSize);[h, pval] =键糟(X (X, X));PVALS(测试)= pval;结束