类 HaltonSequenceGenerator
java.lang.Object
org.hipparchus.random.HaltonSequenceGenerator
- 所有已实现的接口:
-
RandomVectorGenerator
Halton序列的实现。
Halton序列是一种低差异性序列,根据[0, 1]区间生成点,如下所示:
H(n) = d_0 / b + d_1 / b^2 .... d_j / b^j+1 其中 n = d_j * b^j-1 + ... d_1 * b + d_0 * b^0对于更高维度,后续的质数被用作基数,例如{2, 3, 5}用于R^3中的Halton序列。
已知Halton序列在较大的质数下会出现线性相关性,因此通常会对各个数字进行混淆。此实现已经支持高达40维的最佳权重数字,参考 H. Chi: Scrambled quasirandom sequences and their applications。
生成器支持两种模式:
- 顺序生成点:
nextVector()
- 随机访问序列中第i个点:
skipTo(int)
- 另请参阅:
-
构造器概要
构造器说明HaltonSequenceGenerator
(int dimension) 为给定的空间维度构造一个新的Halton序列生成器。HaltonSequenceGenerator
(int dimension, int[] bases, int[] weights) 使用给定的基数和每个维度的权重构造一个新的Halton序列生成器。 -
方法概要
修饰符和类型方法说明int
返回下一个将通过调用nextVector()
返回的Halton序列中的点的索引i。double[]
生成一个随机向量。protected int
scramble
(int i, int j, int b, int digit) 根据以下公式执行数字d_j
的混淆:double[]
skipTo
(int index) 跳转到Halton序列中的第i个点。
-
构造器详细资料
-
HaltonSequenceGenerator
为给定的空间维度构造一个新的Halton序列生成器。- 参数:
-
dimension
- 空间维度 - 抛出:
-
MathIllegalArgumentException
- 如果空间维度超出允许的范围[1, 40]
-
HaltonSequenceGenerator
public HaltonSequenceGenerator(int dimension, int[] bases, int[] weights) throws MathIllegalArgumentException, NullArgumentException 使用给定的基数和每个维度的权重构造一个新的Halton序列生成器。基数数组的长度定义了空间维度,必须大于0。- 参数:
-
dimension
- 空间维度 -
bases
- 每个维度的基数,条目应为(两两)互质,不得为null -
weights
- 混淆过程中使用的权重,如果为null,则不执行混淆 - 抛出:
-
NullArgumentException
- 如果基数为null -
MathIllegalArgumentException
- 如果空间维度超出基数数组长度的范围[1, len],其中len是基数数组的长度 -
MathIllegalArgumentException
- 如果权重不为null且输入数组的长度不同
-
-
方法详细资料
-
nextVector
public double[] nextVector()生成一个随机向量。- 指定者:
-
nextVector
在接口中RandomVectorGenerator
- 返回:
- 作为双精度数组的随机向量。
-
scramble
protected int scramble(int i, int j, int b, int digit) 根据以下公式执行数字d_j
的混淆:( weight_i * d_j ) mod base
实现可以重写此方法以执行不同的混淆。- 参数:
-
i
- 维度索引 -
j
- 数字索引 -
b
- 此维度的基数 -
digit
- 第j个数字 - 返回:
- 混淆后的数字
-
skipTo
跳转到Halton序列中的第i个点。此操作可在O(1)内完成。
- 参数:
-
index
- 要跳转到的序列中的索引 - 返回:
- Halton序列中的第i个点
- 抛出:
-
MathIllegalArgumentException
- 如果索引小于0
-
getNextIndex
public int getNextIndex()返回下一个将通过调用nextVector()
返回的Halton序列中的点的索引i。- 返回:
- 下一个点的索引
-