类 SobolSequenceGenerator

java.lang.Object
org.hipparchus.random.SobolSequenceGenerator
所有已实现的接口:
RandomVectorGenerator

public class SobolSequenceGenerator extends Object implements RandomVectorGenerator
Sobol序列的实现。

Sobol序列是一种低差异序列,具有这样的特性:对于所有的N值,其子序列(x1,... xN)具有低差异性。它可用于在空间S中生成伪随机点,这些点是均匀分布的。

该实现已经支持高达1000维的空间,方向数是从Stephen Joe和Frances Kuo计算得出的。

生成器支持两种模式:

另请参阅:
  • 构造器详细资料

    • SobolSequenceGenerator

      public SobolSequenceGenerator(int dimension) throws MathIllegalArgumentException
      为给定的空间维度构造一个新的Sobol序列生成器。
      参数:
      dimension - 空间维度
      抛出:
      MathIllegalArgumentException - 如果空间维度超出允许的范围[1, 1000]
    • SobolSequenceGenerator

      public SobolSequenceGenerator(int dimension, InputStream is) throws MathIllegalArgumentException, MathIllegalStateException, IOException
      为给定的空间维度构造一个新的Sobol序列生成器,并从给定流中加载方向向量。

      期望的格式与Stephen Joe和Frances Kuo提供的文件相同。第一行将被忽略,因为假定它只包含列标题。列包括:

      • d:维度
      • s:原始多项式的次数
      • a:表示系数的数字
      • m:初始方向数的列表
      示例:
       d       s       a       m_i
       2       1       0       1
       3       2       1       1 3
       

      输入流必须是包含每行一个有效方向向量的ASCII文本。

      参数:
      dimension - 空间维度
      is - 从中读取方向向量的流
      抛出:
      MathIllegalArgumentException - 如果空间维度小于1
      MathIllegalArgumentException - 如果空间维度超出输入流中找到的最大维度范围[1, max]
      MathIllegalStateException - 如果无法成功解析流中的内容
      IOException - 如果从输入流读取时发生错误
  • 方法详细资料

    • nextVector

      public double[] nextVector()
      生成一个随机向量。
      指定者:
      nextVector 在接口中 RandomVectorGenerator
      返回:
      作为双精度数组的随机向量。
    • skipTo

      public double[] skipTo(int index) throws MathIllegalArgumentException
      跳转到Sobol序列中的第i个点。

      此操作的时间复杂度为O(1)。

      参数:
      index - 要跳转到的序列中的索引
      返回:
      Sobol序列中的第i个点
      抛出:
      MathIllegalArgumentException - 如果索引小于0
    • getNextIndex

      public int getNextIndex()
      返回下一个将通过调用nextVector()返回的Sobol序列中的点的索引i。
      返回:
      下一个点的索引